在 Oracle 文档中提到Select
Statement 支持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;
参考:
翻译...使用
开放供声明