【发布时间】:2020-01-12 03:20:15
【问题描述】:
我有两个数组,其中存储了一个表的一些有效值,并将它们传递到 SELECT 语句中。我这样做是为了让数组a 和b 值相应地输入where 条件。
我正在使用EXECUTE IMMEDIATE 打印SELECT 语句,我尝试将SELECT 语句的值插入变量并通过dbms_output.put_line 打印它,但它给出了错误。
我的代码不打印任何东西,它只是显示程序已完成。
DECLARE
dest temp_1.destination%type;
type arr1 IS VARRAY(4) OF VARCHAR2(50);
sd arr1;
type arr2 IS VARRAY(4) OF VARCHAR2(50);
sid1 arr2;
total integer;
BEGIN
sd := street_directional('a','b','c','d');
sid1 := street_direction('1','2','3','4');
total := sd.count;
FOR i in 1 .. total LOOP
execute immediate q'[select destination from temp_1 where cond1 =(:var1) and cond2 = (:var2) ]' using sd(i),sid1(i);
END LOOP;
END;
这不会给出任何输出,它只是显示程序完成。
我试过这样做:
execute immediate q'[select destination from temp_1 where cond1 =(:var1) and cond2 = (:var2) into dest]' using sd(i),sid1(i);
return dest;
-- or printline
dbms_output.put_line(dest);
但它给出了一个错误。
我保留了 serveroutput on 并在 oracle 引擎上运行它。
如果除了使用 PL/SQL 之外还有其他简单的方法可以得到结果,请告诉我。
【问题讨论】:
标签: sql oracle plsql dynamic-sql