PL/SQL Dynamic Where子句 - 围绕动态字符串的单引号?

0 sql oracle plsql

简单的问题 - 如果我正在尝试构建动态查询并在PL/SQL存储过程中运行它,如何将变量括在单引号中以便正确调用它?

例如:

我首先声明一个变量来保存游标的列值.我还声明了一个变量来保存动态查询:

vTest VARCHAR(200);
l_cur_string VARCHAR2(128);
Run Code Online (Sandbox Code Playgroud)

定义我的光标后,我像这样循环:

For entry in c1
LOOP
vTest:= entry.variable;

 l_cur_string := 'SELECT ex1, ex2FROM exTable WHERE col1= || vTest;
END LOOP;
Run Code Online (Sandbox Code Playgroud)

当然,当我打印出动态查询时,它没有单引号vTest.我已经尝试添加它们,但我没有做任何正确的编译.

对简单问题的任何帮助?谢谢!

ant*_*oft 7

将要在字符串中显示的单引号加倍:

l_cur_string := 'SELECT ex1, ex2FROM exTable WHERE col1= '''|| vTest || '''';
Run Code Online (Sandbox Code Playgroud)

但请记住,直接在SQL表达式中嵌入字符串是一种利用漏洞的快速途径.