【发布时间】:2020-02-04 14:33:11
【问题描述】:
我正在学习 plsql 'EXECUTE IMMEDIATE'。因此,对于普通查询,使用它传递的声明为:
query:='SELECT * FROM TABLE_NAME';
execute immediate query;
但我想在查询字符串中传递光标值。但我对如何以正确的方式给出逗号感到困惑。我尝试过这样:
declare
query long;
cursor cur is
select a_name from ot.a;
begin
for i in cur
query='select * from ot.city b where '||i.a_name||'=''kathmandu'';
EXECUTE IMMEDIATW query;
loop
dbms_output.put_line(i.a_name);
end loop;
end;
/
但它给了我这样的错误:
Error at line 1
ORA-01756: quoted string not properly terminated
使用引号的正确方法是什么?我知道我在引号中犯了错误,但是正确的方法是什么?
【问题讨论】:
-
kathmandu之后需要 三个 单引号。前两个转换为单引号(在 SQL 查询的文本中需要)。第三个单引号实际上终止了您的查询(构成查询的引号字符串)。 -
你能举个例子吗?它还没有工作
-
执行即时查询; ?它是否正确?应该是 EXECUTE 立即查询;
-
@Randomguy - “不工作”?以什么方式?我假设您现在遇到了另一个错误?那么,您有不同的问题吗?