Oracle 服务器版本为10.0G,客户端工具为PL/SQL Developer 7.1.5.如今遇到一个非常奇怪的问题,还请大侠帮忙解决。我自己写了一个非常简单的procedure,需要一个参数,类型为NVARCHAR2,如下例:
create or replace procedure TESTMMM(P_NAME in NVARCHAR2)。。
在我debug的时候传递参数赋值以后(比如123,abc等等),进入到这个存储过程内后,P_NAME的值始终显示为NULL,但是程序
执行的结果是对的,也就是说表面上看PL/SQL Developer并不能正确显示NVARCHAR2类型的值。
(当我传递一个全角的参数以后(比如汉字),P_NAME的值始终显示为乱码)。
虽然不影响程序的执行效果,但是我没办法进行debug,在线等待解决方案。

解决方案 »

  1.   

    在你的存储过程里加个DBMS_OUTPUT.PUTLINE(P_NAME )看看有无数据
      

  2.   

    有数据的,但是单步debug的话就很费劲了。
      

  3.   

    但是单步debug的话就很费劲了 怎么理解?请说明
      

  4.   

    DBMS_OUTPUT.PUTLINE(P_NAME )是执行完整个procedure才可以看到结果,我想单步的时候就能即时看到变量的值
      

  5.   

    PL/SQL 里可以看到的,在调试窗口的底部
    调试的时候输入传入的参数的名称就可以显示他的值了
      

  6.   

    如果能看到我就不再这里问了,始终显示NULL,但是实际的值并不是NULL,这是我想问的。
      

  7.   

    用的是中文操作系统吗? PL/SQL Developer 7.1.5 改下编码
      

  8.   

    用 varchar2这个类型,不能解决问题吗
      

  9.   

    是你本身debug 无法操作, 还是你传了一个全角的字符导致debug无法操作的?
      

  10.   

    debug一切正常,只是debug状态下nvarchar2变量的值显示不正确,varchar2可以正常显示,但是我不能用varchar2,因为数据库中的字段就是nvarchar2。
      

  11.   

    你用其他TOAD调试看看,可以看到正确结果?
    可以的话就是你工具有问题了
      

  12.   

    我也怀疑工具的问题,但是developer的版本应该不低了,难道连NVarChar2都不支持?
      

  13.   

    谁可以给我发个版本高点的toad吗?
      

  14.   

    我也怀疑工具的问题,但是developer的版本应该不低了,难道连NVarChar2都不支持?
      

  15.   

    csdn上不是牛人很多吗,怎么连这个非常常见的问题都没人知道?
      

  16.   

    这个问题不常见,使用Nvarchar2的人少,我以前的数据库设计从来都是使用Varchar2的。
      

  17.   

    可以将这个参数定义nvarchar2类型的,
    不过在使用的时候可以使用cast(variable as type)转换使用
      

  18.   

    用的是 oracle 11g ,数据库编码是ZHS16GBK