Sign-up....

关于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

正常写入 正常写入 第六位后丢失 全部丢失 正常写入

[1592 byte] By [msdn] at [2007-8-14 15:34:36]
# 1 Re: 关于C#调用Oracle存储过程的问题

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

rockethead at 2004-6-29 16:41:20 >
# 2 Re: 关于C#调用Oracle存储过程的问题

看来,这个问题,一好办呀!

rockethead at 2004-6-30 12:09:53 >
# 3 Re: 关于C#调用Oracle存储过程的问题

各位,帮帮忙呀!

rockethead at 2004-6-30 14:55:17 >
# 4 Re: 关于C#调用Oracle存储过程的问题

死心吧,不可能的

yz8965 at 2004-7-3 21:04:03 >
# 5 Re: 关于C#调用Oracle存储过程的问题

楼上的,谢谢你给我活力,因为不是你回,我就不能回了,贴子要下沉了,嘿嘿,我怎么会死心??!!

rockethead at 2004-7-4 13:13:12 >
# 6 Re: 关于C#调用Oracle存储过程的问题

命苦呀!

rockethead at 2004-7-5 15:47:34 >
# 7 Re: 关于C#调用Oracle存储过程的问题

类似的问题发了不止一次了.

dinya2003 at 2004-7-6 8:47:09 >
# 8 Re: 关于C#调用Oracle存储过程的问题

dinya2003(OK) 类似的问题发了不止一次了.

================

现在还没有解决,当然要发问咯,没办法解决呀。

rockethead at 2004-7-6 17:48:33 >
# 9 Re: 关于C#调用Oracle存储过程的问题

检查3种数据类型、长度是否一致。

1、调用c#代码时的输入变量

2、C#代码定义的输入变量

3、存储过程的输入变量

btw:与短信相关的业务吧。

Ganz at 2004-8-2 11:31:27 >
# 10 Re: 关于C#调用Oracle存储过程的问题

一头雾水。

rockethead at 2004-8-17 15:24:06 >
# 11 Re: 关于C#调用Oracle存储过程的问题

将“string spName = "ADDSMS";”

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

mingal at 2004-8-23 17:39:53 >

Oracle

All Classified