Oracle里面如果想执行动态SQL查询的话,这个动态SQL只能声明成varchar2吗?我声明成了nvarchar2类型,总是编译失败,改成varchar2就行了。如果只能为varchar2就又有别的问题了,比如我在存储过程中传入的查询参数类型为nvarchar2,这样组合到类型为varchar2的动态sql中的话,就会发生乱码问题呀。

解决方案 »

  1.   

    把nvarchar2 转换成varchar2型1.to_char(ticketno)2.translate(c.ticketnoUSING CHAR_CS) ticketno
      

  2.   

    存储过程代码如下:
    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最终不是变成乱码了?
    还怎么执行?
      

  3.   

    不用二楼的那传值也用varchar2吧.