关于C#调用Oracle存储过程的问题
运行情况:数据部分写入表中,有一字段(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
正常写入 正常写入 第六位后丢失 全部丢失 正常写入

