PL / SQL - пусть переменная ведет себя как исходный код - PullRequest
0 голосов
/ 09 января 2019

У меня есть хранимая процедура, в которой мне нужно «переключаться» между 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 голосов
/ 09 января 2019

Вы должны были бы пойти с динамическим 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...