日期:2014-05-17  浏览次数:20944 次

c#中调用oracle的存储过程
楼主先是用cmd.ExecuteNonQuery();的方法执行了存储过程之后
 用Label1.Text = cmd.Parameters["test"].Value.ToString();
显示了一下效果,结果是我想要的。
但是发现用这个方法来执行的话,如果存储过程中是select语句,而且没有值的话,就会报错。。

所以后来楼主想用dataset来获取到存储过程的返回值

 OracleDataAdapter sqlDA = new OracleDataAdapter();
                sqlDA.SelectCommand = cmd;
                sqlDA.Fill(ds);


        Label1.Text = ds.Tables[0].Rows[0]["test"].ToString();

结果会报错,是不存在table 0 ,是怎么回事呢?



------解决方案--------------------
cmd是怎么定义的的、?
没看出什么问题,把代码贴完整点
------解决方案--------------------
存储过程不返回结果吧。你看看存储过程返回的是什么。
------解决方案--------------------
你先把你的存储过程贴出来(不方便的话就自己仔细看看),Oracle存储过程中是不允许出现一般性的select语句的,所有select语句必须后面跟上into关键字,用来给变量赋值,而不是返回结果集。Oracle的存储过程如果要返回结果集,必须通过输出型游标参数来实现,你根本没用到参数,怎么可能通过存储过程返回数据集!
------解决方案--------------------
亲,oracle的存储过程返回结果集要用游标的
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html