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,我不這麼認爲,我之前看到過這個帖子,這是我的光標配置的方式。更新原始帖子。 –