首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#调用存储过程 参数个数或数据类型出错!解决思路

2012-01-02 
c#调用存储过程 参数个数或数据类型出错!!!!急!急存储过程段:PROCEDUREGetMonitorGroup(p_shift_areavarch

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,这里你可以参考看看。

热点排行