运行情况:数据部分写入表中,有一字段(MSISDN)值被意外截掉第六位后的数据,另一字段(SHORTMSG)值全部丢失,其余三个(ID,RECVER,CREATETIME)值正常写入.==========================================================================
C#代码:
//存储过程名称
string spName = "ADDSMS"; //建立连接
OracleConnection conn = new OracleConnection(this.oConnectionString); //这存储过程建立cmd
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = spName;
cmd.CommandType = CommandType.StoredProcedure; //增加参数
cmd.Parameters.Add("MSISDN",OracleType.VarChar,12);
cmd.Parameters.Add("SHORTMSG",OracleType.VarChar,160);
cmd.Parameters.Add("ID",OracleType.Number); //增加参数值
cmd.Parameters[0].Value = MSISDN;
cmd.Parameters[1].Value = ShortMSG;

//存储过程输出值
cmd.Parameters[2].Direction = ParameterDirection.Output; conn.Open();
cmd.ExecuteNonQuery();
conn.Close(); //返回
return (int)cmd.Parameters[2].Direction;
==========================================================================
存储过程:
PROCEDURE ADDSMS
(
   MSISDN IN VARCHAR2,
   SHORTMSG IN VARCHAR2,
   ID OUT NUMBER
)
AS   CURRENTTIME DATE;
   RECVER VARCHAR2(12);
BEGIN
   SELECT SEQ_SMS.NEXTVAL INTO ID FROM DUAL;
   CURRENTTIME := SYSDATE;
   RECVER := '5';   INSERT INTO RECEIVER (ID,RECVER,MSISDN,SHORTMSG,CREATETIME)
      VALUES (ID,RECVER,MSISDN,SHORTMSG,CURRENTTIME);
   EXCEPTION
   WHEN OTHERS THEN
      ROLLBACK;
END ADDSMS;
==========================================================================
ID         RECVER      MSISDN         SHORTMSG      CREATETIME
正常写入     正常写入    第六位后丢失   全部丢失      正常写入

解决方案 »

  1.   

    补充:错误提示:System.Data.OracleClient.OracleException: ORA-12571: TNS:包写入程序失败
      

  2.   

    dinya2003(OK) 类似的问题发了不止一次了.
    ================
    现在还没有解决,当然要发问咯,没办法解决呀。
      

  3.   

    检查3种数据类型、长度是否一致。
    1、调用c#代码时的输入变量
    2、C#代码定义的输入变量
    3、存储过程的输入变量btw:与短信相关的业务吧。
      

  4.   

    将“string spName = "ADDSMS";”
    改为:“string spName = "包名称.ADDSMS";”