今天,在存储过程中使用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