try:var mannum nvarchar2(10);

解决方案 »

  1.   

    var mannum varchar2(10);
    exec kbmanager.insert_kdata('0001','测试','er','中国',:mannum);
    print mannum;
    commit;这段代码是在oracle的sql plus中调用的,它正常,不是这里的错。是我在delphi中调用时执行这个存储过程时出的错.表结构如下:
    FKID char(10) not null
    FTypeID varchar2(10),
    FDepID varchar2(10),
    FTopic varchar2(60),
    FFileType varchar2(20)
    其中FTYPEID, FDEPID,FTOPIC,FFILETYPE是前四个参数,fkid是序列值。delphi中调用过程如下
      spType.close;
      spType.Parameters.ParamByName('Topic').Value := edtTopic.Text;
      spType.Parameters.ParamByName('DepID').Value := edtDepID.Text;
      spType.Parameters.ParamByName('TypeID').Value := edtType.text;
      spType.Parameters.ParamByName('FileType').Value := cbxFileType.Text;//只有这个字段异常
      spType.ExecProc;
      s := spType.Parameters.ParamByName('fkid').Value;
      

  2.   

    而且在调用时FFileType这个字段总报错,提示‘插入的值大于列的长度’,其实并没有超过20个字符,后来我把ffiletype改成varchar2(200),delphi程序才能执行成功,把数据保存到数据库中,但是就出现了ffiletype字段显示一串方格的情况
      

  3.   

    在SQL PLUS中执行那句话时,有没有改过FFILETYPE的长度?
      

  4.   

    你在delphi中用insert写一句同样参数的语句试试结果
      

  5.   

    在sqlplus执行时没有改长度,ffiletype长度就是20
    由于delphi程序保存时总提示值大于列宽,才改为200的,但改之前和之后在sqlplus里执行都正常,不出现任何错误,我试过了,还是一样,而且即使ffiletype参数用英文字符,如'pppp'等插入后也是一串方格,不管ffiletype改成什么值都是空格
      

  6.   

    你delphi是用什么控件连数据库的?
      

  7.   

    用ado连接的,
    用insert应该没事的,我没有试呢
    明天再说吧,太晚了,麻烦您了oraRichard
      

  8.   

    我发现总会出现下面的毛病:
    比如testid char(4),如果我通过程序向表中增加记录,字段值是两个汉字,总会出现值大于列宽的类似提示,为什么,是字符值转换的关系吗?
      

  9.   

    我估计是你的字符集出的问题
    select * from V$NLS_PARAMETERS 
    看看的NLS_CHARACTERSET/NLS_NCHAR_CHARACTERSET的值是什么,正确不正确
      

  10.   


    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_LANGUAGE
    SIMPLIFIED CHINESENLS_TERRITORY
    CHINANLS_CURRENCY
    RMB
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_ISO_CURRENCY
    CHINANLS_NUMERIC_CHARACTERS
    .,NLS_CALENDAR
    GREGORIAN
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_DATE_FORMAT
    DD-MON-RRNLS_DATE_LANGUAGE
    SIMPLIFIED CHINESENLS_CHARACTERSET
    ZHS16GBK
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_SORT
    BINARYNLS_TIME_FORMAT
    HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT
    DD-MON-RR HH.MI.SSXFF AM
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_TIME_TZ_FORMAT
    HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT
    DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY
    RMB
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_NCHAR_CHARACTERSET
    AL16UTF16NLS_COMP
    BINARYNLS_LENGTH_SEMANTICS
    BYTE
    PARAMETER
    ----------------------------------------------------------------
    VALUE
    ----------------------------------------------------------------
    NLS_NCHAR_CONV_EXCP
    FALSE
    已选择19行。
      

  11.   

    上面是我查出来的参数设置多问了,这个表V$NLS_PARAMETERS 在哪里我怎么没有找到
      

  12.   

    try:用sys/change_on_install登录SQL plusupdate props$ set value$='ZHS16GBK' where name='NLS_NCHAR_CHARACTERSET'
      

  13.   

    oraRichard到期http://community.csdn.net/expert/Topicview2.asp?id=3617258领分
      

  14.   

    上面是我查出来的参数设置多问了,这个表V$NLS_PARAMETERS 在哪里我怎么没有找到
      

  15.   

    这是个视图,不是表,select ... from V$NLS_PARAMETERS