Oracle里面如果想执行动态SQL查询的话,这个动态SQL只能声明成varchar2吗?我声明成了nvarchar2类型,总是编译失败,改成varchar2就行了。如果只能为varchar2就又有别的问题了,比如我在存储过程中传入的查询参数类型为nvarchar2,这样组合到类型为varchar2的动态sql中的话,就会发生乱码问题呀。
Oracle里面如果想执行动态SQL查询的话,这个动态SQL只能声明成varchar2吗?我声明成了nvarchar2类型,总是编译失败,改成varchar2就行了。如果只能为varchar2就又有别的问题了,比如我在存储过程中传入的查询参数类型为nvarchar2,这样组合到类型为varchar2的动态sql中的话,就会发生乱码问题呀。
create or replace procedure SP_GET_NEWS
(
strWhere NVARCHAR2,
CUR_OUT OUT PKG_RS.RECORDSET
)
is QUERY_SQL VARCHAR2(1000);begin
QUERY_SQL := 'SELECT * FROM NEWS ' || TO_CHAR(strWhere);
OPEN CUR_OUT FOR QUERY_SQL;end SP_GET_NEWS;如果我输入的strWhere为“WHERE NEWS_TITLE LIKE '%보안신고센터%'”,那QUERY_SQL最终不是变成乱码了?
还怎么执行?