问题描述
- {"ORA-06550: PLS-00306: 调用 '**' 时 错误 ORA-06550: 10C
- {""ORA-06550: 第 1 行 第 7 列: PLS-00306: 调用 'PROC_GETDATA' 时参数个数或类型错误 ORA-06550: 第 1 行 第 7 列: PL/SQL: Statement ignored ""}
这是我的程序调用代码
'''
''' 获取数据的万能存储过程,查询返回结果集的存储过程调用
''' Author:Jones.Vale
''' Datetime:20160127
'''
''' 存储过程名
''' 传入的参数数组,第一列为参数名,第二列为参数值
'''
'''
Public Function ExecStoredProcData(ByVal strProcName As String ByVal objHashtable As Hashtable) As DataSet
Dim mydt As New DataSet
Dim myCommand As OracleCommand
Dim objOracleParameter As IDictionaryEnumerator = objHashtable.GetEnumerator()
Dim iii As Integer
iii = 30
myCommand = myORACLEConnection.CreateCommand
While objOracleParameter.MoveNext()
Dim tempValue As String = TypeName(objOracleParameter.Value)
Dim myParameter As New OracleParameter '定义一个参数If tempValue = ""Date"" Then myParameter.DbType = DbType.Date '赋参数类型 ElseIf tempValue = ""Integer"" Then myParameter.DbType = DbType.Int32 '赋参数类型 ElseIf tempValue = ""Double"" Or tempValue = ""Float"" Or tempValue = ""NUMBER"" Then myParameter.DbType = DbType.Double '赋参数类型 Else myParameter.DbType = DbType.String '赋参数类型 End If myParameter.ParameterName = objOracleParameter.Key myParameter.Value = objOracleParameter.Value myCommand.Parameters.Add(myParameter) '加入参数列表 End While myCommand.CommandText = strProcName myCommand.CommandType = CommandType.StoredProcedure Dim dataAdapter As New OracleDataAdapter dataAdapter.SelectCommand() = myCommand dataAdapter.Fill(mydt) Return mydtEnd Function
以下是在plSQL中执行测试结果没有任何问题。
存储过程代码:
CREATE OR REPLACE PROCEDURE PROC_GetData
(
v_dateTime date
v_tiger number
p_cur out SYS_REFCURSOR---游标返回
)
as
v_sql varchar2(2000) := ' ';
begin
if v_tiger = 2 then
v_sql :='select t.branchnosum(t.reportloss)/10000 as RV from bhresvfee.t_resv_claim_bhsys t
where t.insuranceclass like (''7%'') and casestate<>''9'' group by t.branchno order by t.branchno';
end if;
OPEN p_cur FOR v_sql;end PROC_GetData;
高手请指点一下这个问题是什么引起的。怎么处理才有效,谢谢!
解决方案
参数个数或类型错误 说的很清楚了
你传人的参数个数不匹配,或者数据类型不对。 建议调试下你的sql 把,参数传递进去看看到底哪里出现问题。
解决方案二:
抓虫子:RA-06550...nPLS-00306: 调用 'MEETING_NOTICE_CREATE' 时参数个数或类型
解决方案三:
debug一下调用ExecStoredProcData一下调用时传入的objHashtable参数
Hashtable是没有顺序的,而存储过程对参数是有位置要求的,最好用ArrayList将排序好的参数传入
时间: 2024-08-30 22:54:17