动态执行立即查询的问题
Posted
技术标签:
【中文标题】动态执行立即查询的问题【英文标题】:Issue with dynamic execute immediate query 【发布时间】:2014-03-06 10:42:36 【问题描述】:我的程序中有一个如下所示的代码。但是当我执行这段代码时,我得到了如下所述的错误。
我得到的错误报告是:
错误报告 - ORA-06553: PLS-306: 调用“OGC_Y”时参数的数量或类型错误 ORA-06512: 在第 20 行 06553. 00000 - “PLS-%s: %s” *原因: *行动:
错误与primary_flag = "Y"
有关
我的代码是:
DECLARE
p_assignee_id NUMBER := 10153;
time_stamp timestamp := '12-DEC-2011';
create_task_view_sql VARCHAR2(4000);
BEGIN
create_task_view_sql:=
'select unique cp.sub_last_name
from cs_sr_contact_points_v cp
where cp.incident_id = 55500
and cp.contact_phone is not null
and primary_flag = "Y"';
dbms_output.put_line(create_task_view_sql);
execute immediate create_task_view_sql;
END;
【问题讨论】:
你真的需要动态sql吗? ora-06553 pls-306 wrong number or types of arguments in call to 'ogc_x' 的可能重复项 【参考方案1】:要将带引号的字符串嵌入带引号的字符串中,请使用两个单引号:
'...and primary_flag=''Y''';
或者您可以使用较新的q'
语法来避免加倍嵌入的引号:
q'[...and primary_flag='Y']';
【讨论】:
以上是关于动态执行立即查询的问题的主要内容,如果未能解决你的问题,请参考以下文章