当前位置: 代码迷 >> C# >> c#中调用oracle的存储过程,该怎么解决
  详细解决方案

c#中调用oracle的存储过程,该怎么解决

热度:2937   发布时间:2013-02-25 00:00:00.0
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的存储过程返回结果集要用游标的
  相关解决方案