问候!有没有办法在Oracle SQL上执行下面的代码中提供的逻辑?我收到错误PLS-00642:SQL语句中不允许使用本地集合类型;对于变量var1和var2 ...
CREATE OR REPLACE PROCEDURE TEST IS
CURSOR c1 IS SELECT * FROM Table1;
TYPE num_arr_type IS TABLE OF NUMBER(5);
i_rec Table1%ROWTYPE;
var1 num_arr_type;
BEGIN
var1:= SELECT num FROM Table3;
OPEN c1;
LOOP
FETCH c1 INTO i_rec;
EXIT WHEN c1%NOTFOUND;
SELECT a.num
FROM Table2 a
WHERE a.cod_agt = var1;
END LOOP;
CLOSE c1;
END TEST;
在我的代码中,我想将SELECT结果存储到变量中,并在另一个select语句的WHERE子句中使用该变量。那可能吗?
答案 0 :(得分:0)
我想将SELECT结果存储到变量中,并使用 另一个select语句的WHERE子句中的变量。就是它 可能的
我不确定你想要实现什么但是看着你上面的陈述我在下面给出一个例子:
CREATE OR REPLACE PROCEDURE TEST IS
CURSOR c1 IS
SELECT * FROM Table1;
TYPE num_arr_type IS TABLE OF NUMBER(5);
var1 num_arr_type;
i_rec Table1%ROWTYPE;
v_num number;
BEGIN
--- This is how you store value to a collection
SELECT num
bulk collect into var1
FROM Table3;
--- Loop to get individual records from your collection
For i in 1..var1.count
loop
SELECT a.num
into v_num
FROM Table2 a
--This is how you pass the value stored in your collection one by one in loop.
WHERE a.cod_agt = var1(i);
dbms_output.put_line(v_num);
end loop;
END TEST;