今天,在存储过程中使用MOT表时,发现MOT表可以JOIN磁盘表,文档中说MOT不支持跨引擎查询,在gsql终端查询MOT和磁盘表做JOIN报错,
但是把跨引擎查询的SQL放在存储过程或者函数中,发现是可以正常执行的,在plpgsql语句块里也是可以的。
这个功能对我们是有用的,是不是说,可以一把MOT跨引擎查询放在plpgsql代码块里?或者这是个bug?
下面是我的测试用例: create table emp1( empno int primary key, ename varchar(10), job varchar(9), deptno numeric(2)); INSERT INTO emp1 VALUES (1,'SMITH','CLERK',20); INSERT INTO emp1 VALUES (2,'ALLEN','SALESMAN',10); INSERT INTO emp1 VALUES (3,'WARD','SALESMAN',30);
create foreign table emp1mot( empno int primary key, ename varchar(10), job varchar(9), deptno numeric(2)); INSERT INTO emp1mot VALUES (1,'SMITH','CLERK',60); INSERT INTO emp1mot VALUES (2,'ALLEN','SALESMAN',50); INSERT INTO emp1mot VALUES (3,'WARD','SALESMAN',40); INSERT INTO emp1mot VALUES (4,'JONES','MANAGER',30); INSERT INTO emp1mot VALUES (5,'JONES','MANAGER',20);
CREATE OR REPLACE PROCEDURE proc1() AS DECLARE rec record; BEGIN for rec in (select * from emp1 e1 join emp1mot e1m on e1.deptno = e1m.deptno) loop RAISE NOTICE '%, %, %, %', rec."empno", rec."ename", rec."job", rec."deptno"; end loop; END; /
call proc1();
新大陆软件 秦浩 mobile: 17625988619 e-mail:qinhao@newland.com.cn