PL / SQL-让变量充当源代码

时间:2019-01-09 09:35:37

标签: oracle variables plsql

我有一个存储过程,需要在2个模式名称之间“切换”。 这是一个示例:

declare
  schema1 varchar2(16) := 'left';
  schema2 varchar2(16) := 'right';
begin
  if (some condition) then
    select * from ???schema1???.tbl1 where id = 1;
  else
    select * from ???schema2???.tbl1 where id = 1;
  end if;
end;

如何让变量(例如schema1)的充当源代码的一部分?我的意思是该代码将被理解为:

...
  select * from left.tbl1 where id = 1;
else
  select * from right.tbl1 where id = 1;
...

1 个答案:

答案 0 :(得分:1)

如果要使用变量进行模式引用,则必须使用动态sql,

declare

schema1 varchar2(16) := 'left';
schema2 varchar2(16) := 'right';
myVar varchar2(100);

begin

  if (some condition) then
    execute immediate 'select * from ' || schema1 || '.tbl1 where id = 1' into myVar;
  else
    execute immediate 'select * from ' || schema2 || '.tbl1 where id = 1' into myVar;
  end if;

end;