Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вызов функции через динамический SQL / 9 сообщений из 9, страница 1 из 1
12.09.2018, 10:33
    #39701304
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
Здравствуйте.

Нужно вызвать функцию через динамический SQL.
Пытаюсь так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
EXECUTE IMMEDIATE 'EXEC MyPackage.MyFunction(p_param1 => :1,
                                             p_param2 => :2,
                                             p_param3 => :3,
                                             p_param4 => :4
                                             p_SYSREFCURSOR => :5)'
USING 10, 20, 30, 40, p_SYSREFCURSOR
RETURN INTO v_ret;



Получаю ошибку ORA-900.

Как вызвать функцию через динамический SQL?
...
Рейтинг: 0 / 0
12.09.2018, 10:37
    #39701311
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
IMNO,

прям как написано, так и вызываете?
...
Рейтинг: 0 / 0
12.09.2018, 10:48
    #39701320
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
IMNO,

Для подумать: в вашем понимании - EXEC что за команда? Является ли она частью языка SQL | PL/SQL ? Или это какая-то "запчасть" от используемого вами GUI (SQLPlus, например)?
...
Рейтинг: 0 / 0
12.09.2018, 10:54
    #39701322
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
IMNO,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  1  declare
  2    v_ret varchar2(20);
  3  begin
  4   EXECUTE IMMEDIATE 'begin :v_ret:=substr(:1,:2,:3); end;'
  5   USING out v_ret,'exec substr',5,6;
  6   dbms_output.put_line(v_ret);
  7* end;
SQL> /
subst

PL/SQL procedure successfully completed.



.....
stax
...
Рейтинг: 0 / 0
12.09.2018, 11:09
    #39701329
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
Stax, спасибо большое! Всё получилось.
Я как-то не допёр что синтаксис вызова будет аналогичен синтаксису в SQLPlus.

Щукина Анна, прежде чем создать тему, я минут 40 гуглил.
Везде только примеры по SQL: select, update, delete, но нигде не было вызова функции.
Сначала пробовал без EXEC. Потом с EXEC.
EXEC это скорее наугад был поставлен, а-ля вызов из SQLPlus.
...
Рейтинг: 0 / 0
12.09.2018, 11:20
    #39701337
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
IMNOя минут 40 гуглил.RTFM PL/SQL Language Reference (FAQ)
IMNOВезде только примеры по SQLВрёшь.
IMNOнаугадМетодым тыка только дети появляются и то не сразу.
...
Рейтинг: 0 / 0
12.09.2018, 11:37
    #39701349
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
ElicВрёшь.

полистал,
имхо, там вызов ф-ции как пример ошибки (Unsupported Data Type in Native Dynamic SQL)

.....
stax
...
Рейтинг: 0 / 0
12.09.2018, 11:51
    #39701358
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
StaxElicВрёшь.полистал,Листай ещё. И учись делать правильные причинно-следственные выводы.
...
Рейтинг: 0 / 0
12.09.2018, 12:04
    #39701367
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции через динамический SQL
ElicStaxпропущено...
полистал,Листай ещё. И учись делать правильные причинно-следственные выводы.
учеба дается с трудом

не кретично, но пока не выходит каменный цветок

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вызов функции через динамический SQL / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]