2016-06-14 4 views
-2

У меня есть PL/функции SQL и в том, что у меня есть следующий фрагмент кода:команда SQL не должным образом закончилась для оператора выбора

execute immediate 'select ' || schemaname || '.' || value1 || '_seq.nextval from dual into cnpParmId'; 

для этой линии, я получаю сообщение об ошибке:

SQL Error: ORA-00933: SQL command not properly ended

В приведенном выше коде я получаю value1 из результата запроса выбора. schemaname - это вход функции, а cnpParmId - это возвращаемое значение функции.

Я пробовал разные способы решения этой проблемы, но до сих пор получаю ошибку.

ответ

1

Сложно сказать, не указав нам больше своей процедуры, но я думаю, что это справедливое предположение, что вы не хотели конкатенировать cnpParmId в динамическом SQL (как может динамический SQL, возможно, знать, как интерпретировать cnpParmId?) , cnpParmId, вероятно, определен где-то в вашей процедуре.

Вместо этого, вы, вероятно, имел в виду использовать выражение into команды execute immediate:

execute immediate 'select ' || schemaname || '.' || value1 || '_seq.nextval from dual' 
into cnpParmId; 
+0

это как функция выглядит следующим образом: – bin

+0

извините, я просто понял, что я говорил 'возвращение into', когда он должен просто «в». Но точка одна и та же, предложение 'in' не должно быть частью динамического SQL. – sstan

+0

Я пробовал это таким образом, но работа с текстом: выполнить немедленный 'select' || schemaname || '' || значение1 || '_seq.nextval from dual' в cnpParmId; Ошибка: Ошибка SQL: ORA-00904: «CNPPARMID»: неверный идентификатор – bin

 Смежные вопросы

  • Нет связанных вопросов^_^