运行情况:数据部分写入表中,有一字段(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
正常写入 正常写入 第六位后丢失 全部丢失 正常写入
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、调用c#代码时的输入变量
2、C#代码定义的输入变量
3、存储过程的输入变量btw:与短信相关的业务吧。
改为:“string spName = "包名称.ADDSMS";”