在Oracle文檔中提到Select
聲明支持CHAR
,VARCHAR2
或CLOB
(not NCHAR or NVARCHAR2
)。 如果你想實現與NVARCHAR
然後我知道的唯一的解決方案是translate
使用CHAR_CS
參數將字符轉換爲數據庫字符集。輸出數據類型是VARCHAR2
。
DECLARE
TYPE CUR_DATA IS REF CURSOR;
OUT_DATA CUR_DATA;
SQL_Statement NVARCHAR2(4000); --declare this as VARCHAR2
SQL_Statement_var VARCHAR2(4000);
BEGIN
SQL_Statement := N'SELECT * FROM dual ';
SQL_Statement_var := TRANSLATE(SQL_Statement USING CHAR_CS);
OPEN OUT_DATA FOR SQL_Statement_var;
END;
No errors.
如果NVARCHAR2
不是強制性的,那麼嘗試用提供的基本數據類型來創建。
DECLARE
TYPE CUR_DATA IS REF CURSOR;
OUT_DATA CUR_DATA;
SQL_Statement VARCHAR2(4000); --declare this as VARCHAR2
BEGIN
SQL_Statement := ' SELECT * FROM dual ';
OPEN OUT_DATA FOR SQL_Statement;
END;
參考文獻:
Translate...USING
Open For Statement
NVARCHAR2或VARCHAR2不事關我,我根本不知道這兩者之間的差別。謝謝你的提示!我在我的頭上撞牆1 – Adamantine 2012-04-05 20:02:39
@Adamantine:是的,然後用第二種方法使用varchar2 – 2012-04-05 20:05:03