我有一个以字符串构造的动态SQL查询。 该程序应返回'REF CURSOR'。
当我尝试打开查询的光标时,我收到错误 PLS-00455 。
光标定义
CURSOR cu_SiteList IS
SELECT SEC_NN.SRV_ID
,SEC_NN.SRV_NAME
,SEC_NN.SRV_COMTYP_CODE
FROM SEC_NN
,COM_SITE_STATE_T
WHERE SEC_NN.SRV_COMTYP_CODE <> 1
AND SEC_NN.SRV_ID = 2;
TYPE SITE_LIST_TYP IS REF CURSOR RETURN cu_SiteList%ROWTYPE;
以下是查询:
p_SiteList SITE_LIST_TYP;
lv_QueryStr := ' SELECT SEC_NN.SRV_ID ' ||
' ,SEC_NN.SRV_NAME ' ||
' ,SEC_NN.SRV_COMTYP_CODE ' ||
' FROM SEC_NN_, ' ||
' COM_SITE_STATE_T ' ||
' WHERE SEC_NN.SRV_COMTYP_CODE <> 1 ' ||
' AND SEC_NN.SRV_MODE_CODE = 2' ||
' AND SEC_NN.SRV_ID = COM_SITE_STATE_T.SRV_ID';
OPEN p_SiteList FOR lv_QueryStr;
如您所见,我只使用SEC_NN表中的3列,因此创建一个整个表的ROWTYPE游标对我来说不起作用。 怎么能克服这个? 提前谢谢。
答案 0 :(得分:2)
从评论中,修复是通过替换行来将光标声明为“弱”引用光标
p_SiteList SITE_LIST_TYP;
与
p_SiteList SYS_REFCURSOR;