|
|
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Добрый день. Возникла необходимость анализировать значения параметров в форме, причём параметры задаются во внешней среде, хотел сделать через слияние данных запроса в строке и дальнейшем разборе, но не могу понять, как победить ошибки Не все переменные привязаны/Переменной привязки не существует Пример кода Код: plaintext 1. 2. 3. 4. Суть данного кода, при его вызове должен быть проанализирован параметр ATTRIBUTE1 блока WORK_ORDER на указанное значение. Ошибка Не все переменные привязаны возникает на команде v_rows := DBMS_SQL.EXECUTE(v_cursor); Основная проблема в том, что условие во фразе WHERE заранее не известно, и атрибутов "всего лишь" может быть 100 штук (ATTRIBUTE1 - ATTRIBUTE100). Т.е. как бы суть ошибки понятно, пакет думает, что :WORK_ORDER.ATTRIBUTE1 - это связанная переменная Как вариант решения проблемы вот такой код: Код: plaintext 1. 2. 3. 4. 5. При таком раскладе работает, но у меня может быть 100 разных атрибутов, и при добавлении строки DBMS_SQL.BIND_VARIABLE(v_cursor, ':ATTRIBUTE2',:WORK_ORDER.ATTRIBUTE2); для данного примера выдаётся ошибка, что переменной привязки не существует В общем как то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 07:29 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Много раз читал, ничего не понял. Может просто так надо писать? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 09:37 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
ya.vypusck, Условие WHERE заранее не известно, задаётся во внешней системе и сохраняется в отдельной таблице как текст, и эти условия могут быть разными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 11:33 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Естественно, что, используя пакет dbms_sql, вы не можете заставить его "понимать" айтемы блока в качестве bind-переменных. Фактически, в такой ситуации вам придется выполнять предварительный разбор запроса - находить переменные в тексте и выполнять их привязку, причем, каким-то образом еще и высняя типы параметров... Может быть, вам проще будет такие проверки выполнять, устанавливая DEFAULT_WHERE для специально созданного "проверяющего" блока (т.к. там можно ссылатьтся на block items в синтаксисе :WORK_ORDER.ATTRIBUTE1)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 11:51 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
-=APS=-Естественно, что, используя пакет dbms_sql, вы не можете заставить его "понимать" айтемы блока в качестве bind-переменных. Фактически, в такой ситуации вам придется выполнять предварительный разбор запроса - находить переменные в тексте и выполнять их привязку, причем, каким-то образом еще и высняя типы параметров... Может быть, вам проще будет такие проверки выполнять, устанавливая DEFAULT_WHERE для специально созданного "проверяющего" блока (т.к. там можно ссылатьтся на block items в синтаксисе :WORK_ORDER.ATTRIBUTE1)? Дак вот не хочется так делать, это для 100 атрибутов поверки писать, индусятиной отдаёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 12:06 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Magic+Дак вот не хочется так делать, это для 100 атрибутов поверки писать, индусятиной отдаёт. А ты думаешь, что твой случай настолько типичен, что разработчики должны были его предусмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 12:19 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Кстати, CREATE_GROUP_FROM_QUERY не спасёт ли отца русской демократии? Там, вроде, тоже :BLOCK.ITEM поддерживается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 12:36 |
|
||
|
Использование динамического PL/SQL с параметрами блоков данных в Oracle Forms
|
|||
|---|---|---|---|
|
#18+
-=APS=-Кстати, CREATE_GROUP_FROM_QUERY не спасёт ли отца русской демократии? Там, вроде, тоже :BLOCK.ITEM поддерживается. Отличный ответ. Спасибо большое. Всё получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 05:52 |
|
||
|
|

start [/forum/topic.php?fid=51&msg=37041928&tid=1878806]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 487ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...