在oracle中,当with as语句的查询结果只有一个并且没有传入参数的时候可以对变量进行赋值。
CREATE OR REPLACE PROCEDURE test123
IS
var INT;
BEGIN
SELECT CUSTID INTO var FROM
(
WITH a AS (
SELECT * FROM CUSTOMER WHERE CUSTID = 1
)
SELECT CUSTID FROM a
);
dbms_output.put_line(var);
END;
但是如果是需要传入参数的话,则不可执行;
例如:
create or replace PROCEDURE test12
(in num int)
is
var int;
begin
SELECT CUSTID INTO var FROM
(
with a as
(
select * from CUSTOMER where CUSTID = num
)
select CUSTID from a
);
dbms_output.put_line(var);
end;
但是在DB2中,无论是有传参还是没有传参都无法执行。
解决思路:
建立临时表,将select的结果放到临时表里面,然后再进行赋值(可能这个时候都不需要赋值了,直接使用select的结果就可以了)