|
|
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
Есть PTF, возвращающая произвольную структуру данных. Функцию взял отсюда: http://www.oracle-developer.net/display.php?id=422. Если в качестве параметра передаю обычную строку, все работает: Код: plsql 1. 2. 3. 4. Если передаю функцию, то выдает ошибку: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Ругается в строке Код: plsql 1. Подскажите, пожалуйста, в чем ошибка. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 16:49 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
ArchiSQLв чем ошибка.Структура результирующего набора должна быть определена на этапе parsing-а. Литерал этому удовлетворяет, переменные - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 16:55 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
ElicArchiSQLв чем ошибка.Структура результирующего набора должна быть определена на этапе parsing-а. Литерал этому удовлетворяет, переменные - нет. Спасибо за ответ. Можно как-то сделать так, чтобы иметь возможность "создавать" селект средствами PL\SQL, но при передаче в параметры функции, парсинг проходил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 17:01 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
И не будет работать. ODCI table interface работает следующим образом: ODCITableDescribe где и определяются поля вызывается только при hard parse. Посему если ты выдашь: Код: plsql 1. 2. 3. 4. во второй раз, то Oracle найдет SQL в shared pool и parse soft а следовательно и ODCITableDescribe вызван не будет и выполнение пойдет с тем-же числом и типами полей как было в первый раз. Но главное не это. ODCITableDescribe, как уже было сказано, выполняется на фазе парсинга когда все что доступно это литералы. Все что не литерал передается ODCITableDescribe как NULL. Так что 'select 123 from dual' будет передано ODCITableDescribe a test25062018.varchar2_for_ptf нет и ODCITableDescribe вместо него получит NULL и не сможет определить поля результата и загнется. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 17:24 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
ArchiSQLиметь возможность "создавать" селект средствами PL\SQL Гораздо проще формировать не select неизвестной структуры с выдачей resultset в статический код, а шаблонный pl/sql блок, содержащий как сам select, так и его обработку, который и скармливать execute immediate. Если результат обработки надо выдать в сторону клиента, то ref cursor справится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 17:31 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
SY, Спасибо за пояснения. andrey_anonymousArchiSQLиметь возможность "создавать" селект средствами PL\SQL Гораздо проще формировать не select неизвестной структуры с выдачей resultset в статический код, а шаблонный pl/sql блок, содержащий как сам select, так и его обработку, который и скармливать execute immediate. Если результат обработки надо выдать в сторону клиента, то ref cursor справится. Я Вас правильно понимаю: 1. Командами PL\SQL формируем селект нужной структуры в виде переменной varchar2. 2. С помощью execute immediate формирую слаботипизированный курсор и передаю его на сторону клиента? Пока не совсем понятно как из такого курсора вытаскивать данные... Вообще задача такая - есть некая гуишка, где пользователь вводит параметры. В зависимости от этих параметров меняется набор столбцов селекта. Хочется, чтобы код гуи был неизменным. То есть я думал сделать следующее - из внешней среды вызывается процедура, где формируется нужный селект в переменной varchar2, которая потом передается в PTF, которая уже вызывается из кода гуи (этот селект остается неизменным). Но вот не получилось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:29 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
ArchiSQLПока не совсем понятно как из такого курсора вытаскивать данные... здесь уточню, вытаскивать данные при заранее неизвестной структуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:31 |
|
||
|
ORA-06561: given statement is not supported by package DBMS_SQL
|
|||
|---|---|---|---|
|
#18+
ArchiSQLArchiSQLПока не совсем понятно как из такого курсора вытаскивать данные... здесь уточню, вытаскивать данные при заранее неизвестной структуре. это должно быть заботой гуя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:40 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1883805]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
39ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 360ms |

| 0 / 0 |
