读书人

c#调用存储过程 参数个数或数据类型出

发布时间: 2012-01-02 22:40:04 作者: rapoo

c#调用存储过程 参数个数或数据类型出错!!!!急!急
存储过程段:
PROCEDURE GetMonitorGroup(p_shift_area varchar2, p_plant_name varchar2, p_eq_name varchar2,
p_target_type varchar2, p_start_date date, p_end_date date,
p_group_by varchar2, MonitorGroup in out cursor_MonitorGroup);
C#代码段:
cmd.Parameters.Add( "p_shift_area ", OracleType.VarChar).Value= "化一厂 ";
cmd.Parameters[ "p_shift_area "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "p_plant_name ", OracleType.VarChar);
cmd.Parameters[ "p_plant_name "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "p_eq_name ", OracleType.VarChar);
cmd.Parameters[ "p_eq_name "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "p_target_type ", OracleType.VarChar);
cmd.Parameters[ "p_target_type "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "p_start_date ", OracleType.DateTime);
cmd.Parameters[ "p_start_date "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "p_end_date ", OracleType.DateTime);
cmd.Parameters[ "p_end_date "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "p_group_by ", OracleType.VarChar);
cmd.Parameters[ "p_group_by "].Direction = ParameterDirection.Input;

cmd.Parameters.Add( "MonitorGroup ", OracleType.Cursor);
cmd.Parameters[ "MonitorGroup "].Direction = ParameterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
执行到da.Fill(ds);时就出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'GETMONITORGROUP ' 时参数个数或类型错误


ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'GETMONITORGROUP ' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored


源错误:


行 47: OracleDataAdapter da = new OracleDataAdapter(cmd);
行 48: DataSet ds = new DataSet();
行 49: da.Fill(ds);
行 50: this.DataGrid1.DataSource = ds.Tables[0].DefaultView;
行 51: this.DataGrid1.DataBind();


源文件: e:\Demo\procedure.aspx.cs 行: 49

请高手帮忙解决,谢谢!!!!!

[解决办法]
cmd.Parameters[ "MonitorGroup "].Direction = ParameterDirection.InputOutput;
试试
[解决办法]
帮你顶一下
[解决办法]
cmd.Parameters.Add( "MonitorGroup ", OracleType.Cursor);
cmd.Parameters[ "MonitorGroup "].Direction = ParameterDirection.Output;

换成

OracleParameter SpOutput = new OracleParameter( "MonitorGroup ", OracleType.Cursor);
SpOutput.ParameterDirection = ParameterDirection.Output;
cmd.Parameters.Add(SpOutput);

//这不是等价吗? 换了还要多写一行代码呢
[解决办法]
因为我没有用过Oracle,不清楚参数类型是不是OracleParameter,如果是Mssql的话,应该就是SqlParameter,这里你可以参考看看。

读书人网 >C#

热点推荐