c# – ORA-06550:第1行第7列:PLS-00306:参数的数量或类型错误
发布时间:2020-12-15 17:42:09 所属栏目:百科 来源:网络整理
导读:嗨,我在Oracle 11g服务器上调用存储过程有问题. 这是我的存储过程 PROCEDURE get_rit_by_user_id(KDC_KEY IN VARCHAR2,p_id_utente IN NUMBER,p_cur_out OUT type_cursor) IS BEGIN ... ... ... END 这是我的c#代码 OracleCommand cmd = new OracleCommand()
嗨,我在Oracle 11g服务器上调用存储过程有问题.
这是我的存储过程 PROCEDURE get_rit_by_user_id(KDC_KEY IN VARCHAR2,p_id_utente IN NUMBER,p_cur_out OUT type_cursor) IS BEGIN ... ... ... END 这是我的c#代码 OracleCommand cmd = new OracleCommand(); cmd.Connection = oracleConnection; cmd.CommandText = userIdEsercizio + packageName + "GET_RIT_BY_USER_ID"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("KDC_KEY",OracleDbType.Varchar2,kdcKey,ParameterDirection.Input); cmd.Parameters.Add("P_ID_UTENTE",OracleDbType.Int32,user_id,ParameterDirection.Input); cmd.Parameters.Add("P_CUR_OUT",OracleDbType.RefCursor,ParameterDirection.Output); OracleDataReader reader = cmd.ExecuteReader(); cmd.ExecuteReader()抛出此异常 ORA-06550: line 1,column 7: PLS-00306: wrong number or types of arguments in call to 'GET_RIT_BY_USER_ID' ORA-06550: line 1,column 7: PL/SQL: Statement ignored 我在c#代码中看不出任何错误.你会帮我吗?谢谢 最好的祝福 解决方法
您的第二个参数是NUMBER,而不是整数.将第二个参数类型更改为OracleDbType.Decimal
http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleDbTypeEnumerationType.htm 另请检查Add方法的语法.现在可能更好地更明确地指定参数属性,即使它使代码更加冗长: cmd.Parameters.Add( new OracleParameter() { ParameterName="KDC_KEY",DbType=OracleDbType.Varchar2,Value=kdcKey,Direction=ParameterDirection.Input } ); 等等 proc除了光标还返回结果集吗?如果不使用ExecuteNonQuery而不是Execute (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |