0
我有一个动态SQL查询,它是用字符串构造的。 该过程应该返回'REF CURSOR'。PLSQL - 游标不能用于动态sql
我收到错误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;
正如你可以看到我只用3列从SEC_NN表,所以创建的游标的一个ROWTYPE整个桌子都不适合我。 如何克服这一点? 在此先感谢。
更换线
“我得到的错误,当我尝试打开游标'。 **什么错误?**请编辑您的代码以包含打开游标的代码以及您收到的错误消息。 –
[为什么我们不能使用动态SQL语句的强引用?](http://stackoverflow.com/questions/2783461/why-cant-we-use-strong-ref-cursor-with-dynamic -sql-statement) –
@LukeWoodward,我不这么认为,我之前看到过这个帖子,这是我的光标配置的方式。更新原始帖子。 –