如何在PL / SQL中动态分配变量?
我尝试过这样的事情,但是不起作用:
declare
v_variable number := execute immediate 'select max(value) from mytable';
begin
dbms_output.put(v_variable);
end;
怎么可以这样做?
答案 0 :(得分:2)
只需在代码正文中分配,而不是在声明中。此外,您还没有使用任何动态SQL,因此不需要EXECUTE IMMEDIATE
..
declare
v_variable number;
begin
select max(value)
into v_variable
from mytable;
dbms_output.put(v_variable);
end;
答案 1 :(得分:1)
您只能将变量值分配给代码中执行(开始后)部分的变量。例如,以下内容(取自https://stackoverflow.com/a/9957933/150533)交换来自两个变量的值:
declare
no1 number(3):=31;
no2 number(3):=34;
temp number;
begin
dbms_output.put_line('Before swap');
dbms_output.put_line('No1 : '||no1||' No2 : '||no2 );
-- no1:=(no1+no2)-(no2:=no1); generate error
temp := no1;
no1 := no2;
no2 : temp;
dbms_output.put_line('After swap');
dbms_output.put_line('No1 : '||no1||' No2 : '||no2 );
end;