Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2

ТЕМА:

EXECUTE IMMEDIATE в Oracle использовать как один к многим 17 июль 2011 11:34 #2331

  • Olessa
  • Olessa аватар Автор темы
  • Не в сети
  • Новичок
  • Новичок
  • Сообщений: 42
  • Спасибо получено: 0
Привет всем)

Execute immediate
Необходимо один параметр передать во многие части запроса
Дублировать его в предложении using не могу, код использоваться под разные запросы
(в запросах разное число одного и того же параметра)
Это возможно ? или открывать курсор и bind-ть параметры ?
sSql:='select F1 from T1 where F2=:1 union all select F1 from T2 where F2=:1';
     execute immediate sSql using 2  
Спасибо !

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: EXECUTE IMMEDIATE в Oracle использовать как один к многим 17 июль 2011 11:42 #2334

нет, конечно.
execute immediate .. using
поддерживает только позиционную нотацию
можно, как вы пишете, биндить или переписать запос - с with кляузой ну или replace-ом на литерал обработать (если оно допустимо)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: EXECUTE IMMEDIATE в Oracle использовать как один к многим 17 июль 2011 11:54 #2335

sSql:='select F1 from T1 where F2=:1 union all select F1 from T2 where F2=:1';
     execute immediate sSql using 2

а это пример точно рабочий?

для инсертов/апдейтов и прочего можно писать pl-sql-блок вида
v_sql_text := '
declare v  varchar2(2000):=:p_f2;
begin
insert into t3(f1)
select f1 from t1 where f2 = :p_f2
union all
select f1 from t2 where f2 = :p_f2;
end;'
execute immediate v_sql_text using p_f2

где переменная подвязывается только один раз

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: EXECUTE IMMEDIATE в Oracle использовать как один к многим 17 июль 2011 11:59 #2336

  • Olessa
  • Olessa аватар Автор темы
  • Не в сети
  • Новичок
  • Новичок
  • Сообщений: 42
  • Спасибо получено: 0

а это пример точно рабочий?

Не не рабочий ...
писала что ХОТЕЛОСЬ бы получить !

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: EXECUTE IMMEDIATE в Oracle использовать как один к многим 17 июль 2011 12:03 #2337

Это я к тому - что должно получиться в результате execute immediate селекта в никуда?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: EXECUTE IMMEDIATE в Oracle использовать как один к многим 17 июль 2011 12:07 #2338

Такой изврат хочется ?

declare

a number(10);
b number(10);
c number(10) := 1;

ref_cv sys_refcursor;

sSql varchar2(255);
begin

sSql := ' begin open :1 for select 2 from dual where 1=:2 union all select 3 from dual where 1=:2; end;';

execute immediate sSql
using in ref_cv, in c;

fetch ref_cv
into c;
dbms_output.put_line(c);
fetch ref_cv
into c;
dbms_output.put_line(c);

close ref_cv;

end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2