Простой вопрос. Если я пытаюсь создать динамический запрос и запустить его в хранимой процедуре PL/SQL, как мне заключить эту переменную в одинарные кавычки, чтобы она вызывалась правильно?PL/SQL Dynamic Where Clause - Отдельная цитата вокруг динамической строки?
Например:
я сначала объявить переменную для хранения значения столбца курсора в. Я также объявить переменную для динамического запроса:
vTest VARCHAR(200);
l_cur_string VARCHAR2(128);
После определения мой курсор, I цикл через него, как так:
For entry in c1
LOOP
vTest:= entry.variable;
l_cur_string := 'SELECT ex1, ex2FROM exTable WHERE col1= || vTest;
END LOOP;
Конечно, когда я распечатать динамический запрос, он Безразлично У меня есть одинарные кавычки около vTest
. Я попытался добавить их, но ничего не выполнил правильно.
Любая помощь по простому вопросу? Спасибо!
Что вы хотите делать с этими запросами? Редко использовать динамический SQL, чаще всего статический SQL является достаточным. Даже если вам действительно нужно * использовать динамический SQL, вы все равно можете использовать [bind variables] (http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#BHCGEFCA). Не оставляйте себя открытым для [SQL injection] (http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#CHDFCHHJ). Опишите свой процесс, чтобы мы могли вам помочь. –
Спасибо. По сути, я составил хранимую процедуру, которая возвращает список пакетных рабочих потоков в том порядке, в котором они выполняются. Теперь, что я пытаюсь сделать, это цикл через эти потоки работы и перекрестные ссылки на них с заданиями, которые они содержат. Нет взаимодействия с этой хранимой процедурой. Тем не менее, я все же думаю, что я буду рассматривать переменные связывания и модифицировать этот код для использования статического SQL. Спасибо за эту ссылку! – TimeBomb006