Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > USING - динамический


Автор: Anatret 7.10.2010, 10:08
Здравствуйте. Появилась необходимость в создании динамического вызова функций с динамическим USING. Вот что я имею сейчас.
Код

EXECUTE IMMEDIATE CALL PAYMENT_PKG.PAYMENT(:1,:2,:3,:4) INTO :5 USING IN user_login_in, IN debet_in, IN oper_trans_id_in, IN l_Paysys_Id,OUT tran_id_out;

можно ли блок USING сделать динамическим? то есть типа этого
Код

l_using := 'IN user_login_in, IN debet_in, IN oper_trans_id_in, IN l_Paysys_Id,OUT tran_id_out';
EXECUTE IMMEDIATE CALL PAYMENT_PKG.PAYMENT(:1,:2,:3,:4) INTO :5 USING lusing;

У меня сейчас есть вариант вызвать PAYMENT_PKG.PAYMENT передать ему объект с переменными и там уже в нем подставлять переменные.

Автор: Zloxa 7.10.2010, 10:50
Цитата(Anatret @  7.10.2010,  10:08 Найти цитируемый пост)
можно ли блок USING сделать динамическим?

нет

Цитата(Anatret @  7.10.2010,  10:08 Найти цитируемый пост)
 Вот что я имею сейчас.

простите, а на каком это языке?
Код

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 

SQL> create or replace procedure tstp(p1 number) 
  2  is
  3  begin 
  4    null;
  5  end;
  6  /

Procedure created.

SQL> declare 
  2    foo number := 0;
  3  begin
  4    execute immediate call tstp(:1) using foo;
  5  end;
  6  / 
SP2-0552: Bind variable "1" not declared.

Автор: Anatret 7.10.2010, 12:10
Цитата(Zloxa @ 7.10.2010,  12:50)
простите, а на каком это языке?

спсб за ответ. Жаль что нельзя.
А это sqlplus и вызываю не процедуру а функцию и ловлю не out параметры а return.

Автор: Zloxa 7.10.2010, 12:38
sqlplus это приложение -  не язык. у него есть своя система команд, но тут явно не тот случай.
Я Вам хотел как бы намекнуть, что, возможно, приведенный Вами код синтаксически не корректен.

По существу:
Если Вам необходиомо испльзовать переменное количество параметров в динамических выражениях, обратите свой взор на http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_dynamic_sql.htm#i1006546

Автор: Anatret 7.10.2010, 13:15
ок спсб за совет и замечание.)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)