在 Oracle 文档中提到SelectStatement 支持CHAR, VARCHAR2, 或CLOB( not NCHAR or NVARCHAR2)。如果你想实现,NVARCHAR那么我知道的唯一解决方案是translate 使用CHAR_CS参数将 char 转换为数据库字符集。输出数据类型是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;
参考:
翻译...使用
开放供声明