Oracle: выберите переменную, используемую в предложении where - PullRequest
2 голосов
/ 08 июля 2010

Могу ли я изменить значение переменной с помощью select into с исходным значением переменной как части предложения where в операторе select?

EI будет следующий код работать должным образом:

declare
v_id number;
v_table number; --set elsewhere in code to either 1 or 2
begin
  select id into v_id from table_1 where name = 'John Smith';
  if(v_table = 2) then
    select id into v_id from table_2 where fk_id = v_id;
  end if;
end;

1 Ответ

3 голосов
/ 08 июля 2010

Должно работать. Ты это пробовал? Есть вопросы?

После синтаксического анализа ваши операторы select должны иметь переменные связывания, где находится ваш v_id. Подстановка выполняется, когда оператор фактически выполняется.

Edit: Если вы не вставляете константы в свои запросы, Oracle всегда будет анализировать их в операторы с переменными связывания - это позволяет СУБД повторно использовать один и тот же базовый запрос с несколькими значениями без повторного анализа оператора - огромный выигрыш в производительности. Основная идея переменной связывания - это подстановка значений во время выполнения в разобранный запрос. Думайте об этом так: для обработки запроса все значения должны быть известны. Вы отправляете их в движок, Oracle выполняет их работу и возвращает результат. Это последовательный процесс, при котором выходное значение не может перейти на входное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...