在程序中调用Oracle的存储过程
我在执行下面的代码时,系统总在执行第6行时报错
string billid;
string str_Conn= "user id=cm;data source=MOVESOFT;password=123 ";
this.myConn.ConnectionString=str_Conn;
this.myConn.Open();
OracleCommand cmd=new OracleCommand( "sp_new_glide ",myConn);
billid=(string)cmd.ExecuteOracleScalar();
this.myConn.Close();
this.textBox1.Text=billid;
但我看不出错在哪,是Oracle的存储过程不能这样调用用吗?请各位高手指点一下
其中的存储过程内容如下:
create or replace procedure cm.sp_new_glide-- 新增一个入库单
(
v_billid out varchar2
) as
begin
--累加算出新单据号
select billid into v_billid from cm.glide_total where rownum=1 order by billid desc;
v_billid:=lpad(8,to_char(v_billid+1), '0 ');--给单据号补零
end sp_new_glide;
存储过程是查出上一张的单据号加一并补足位数,生成新的单据号。如:旧0003,新0004
------解决方案--------------------我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html
------解决方案--------------------OracleCommand cmd=new OracleCommand( "sp_new_glide ",myConn);
下面 加这句
cmd.CommandType = CommandType.StoredProcedure;
------解决方案--------------------string str_Conn= "user id=cm;data source=MOVESOFT;password=123 ";
this.myConn.ConnectionString=str_Conn;
this.myConn.Open();
OracleCommand cmd=new OracleCommand( "sp_new_glide ",myConn);
OracleParameter op = cmd.Parameters.Add( "? ", OracleType.VarChar, 32);
op.Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
this.myConn.Close();
this.textBox1.Text = Convert.ToString(op.Value);