2 jonesvale JonesVale 于 2016.01.28 14:41 提问

{"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 mydt
End 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.branchno,sum(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;

高手请指点一下这个问题是什么引起的。怎么处理才有效,谢谢!

3个回答

rui888
rui888   Ds   Rxr 2016.01.28 14:57

参数个数或类型错误 说的很清楚了
你传人的参数个数不匹配,或者数据类型不对。 建议调试下你的sql 把,参数传递进去看看到底哪里出现问题。

enpterexpress
enpterexpress   Rxr 2016.01.28 15:20
wanghan1977
wanghan1977   2016.01.29 09:51

debug一下调用ExecStoredProcData一下调用时传入的objHashtable参数
Hashtable是没有顺序的,而存储过程对参数是有位置要求的,最好用ArrayList将排序好的参数传入

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
{"ORA-06550: 第 1 行, 第 7 列: /nPLS-00306: 调用 'NIEC_ADDUSER' 时参数个数或类型错误/nORA-06550: 第 1 行, 第 7 列: /nPL/SQL: Statement ignored/n"}
       这个问题困扰了我0.6个工作日,终于解决!存储过程如下:CREATE OR REPLACE PROCEDURE "NIEC_ADDUSER" --2007-5-25增加用户----〉普通(   Typeid   in char,    Name     in char,    Email    in char,    Password in char,    UserID  
{"ORA-06550: 第 1 行, 第 7 列: /nPLS-00306: 调用 'PRO_GZLTJ' 时参数个数或类型错误
今天在用EF调用oracle包PRO_GZLTJ的时候,报了个错:       ORA-06550: 第 1 行, 第 7 列: PLS-00306: 调用 'PRO_GZLTJ' 时参数个数或类型错误       ORA-06550: 第 1 行, 第 7 列: /nPL/SQL: Statement ignored        但是11g的oracle测试整个包并没有什么错误,参数
ORA-06550: 第 1 行, 第 7 列: \nPLS-00306: 调用 'xxxxxx' 时参数个数或类型错误\nORA-06550: 第 1 行, 第 7 列: \nPL/SQL: Sta
关于ORACLE提示:"System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列: \nPLS-00306: 调用 'xxxxxx' 时参数个数或类型错误\nORA-06550: 第 1 行, 第 7 列: \nPL/SQL: Statement ignored\n\r\n 的错误 近来因为要做个外挂程序,调用的是OR
ORA-06550: line 1, column 7: PLS-00306 ERROR
我在用asp.net调用oracle存储过程的时候报ORA-06550错误.create or replace procedure Proc_PaperDetail (   outid out   PAPER.PID % type ) is x varchar2(1200); y varchar2(1200); v_id number; begin select wm_concat(QID),replace(wm_concat(QANSWER),',','')into x,y from
PLS-00306: 调用 'IS NOT NULL' 时参数个数或类型错误
SQL> create or replace procedure sybx_dwsjqy as   2     --获取2版单位信息   3     cursor cur_Dwjbxx is   4        select * from tyr_Dwjbxx ;   5     --根据单位名单获取当前系统的单位信息,以判断是否存在。   6     cursor cur_chb1(
解决 PLS-00306: 调用"存储过程名"时参数个数或类型错误
今天利用SHELL调用oracle存储过程时遇到了如下错误:          PLS-00306: 调用"存储过程名"时参数个数或类型错误.          总结:报PLS-00306: 调用"存储过程名"时参数个数或类型错误时, 一个原因可能是因为前台代码的参数与后台的存储过程的参数不一致, 包括:参数的名称、个数、数据类型、参数类型、参数的顺序; 另一个原因:可能在前台赋了个nu
参数个数或类型错误Oracle
ORA-06550: 第 1 行, 第 7 列: PLS-00306: 调用 'PROC_DHJTINFOUPDATEGD' 时参数个数或类型错误 ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored 刚开始写代码,第一次碰到这个问题的时候不懂得怎么解决,因为存储过程里面的个数和程序中的是一致的, 可在断点查询了很长时间,才知
“ORA-06550: 第 1 行, 第 7 列”解决方法
ORA-06550: 第 1 行, 第 7 列: PLS-00201: identifier 'MONITORCHANGEPLS.MCP_ISCHANGE' must be declared ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored
C#执行Oracle存储过程 报Oracle-06550错误解决方法
用代码说明解决方法.在Oracle有一个存储过程,在用Oracle工具(Quest Toad)调试执行时没有任何问题,当在C#中调用此过程报Oracle-06550错误.一般的此存储过程具有调用参数.具体代码:Oracle后台的存储过程代码:Create Or Replace Procedure Lungu.Pro_Alert_Lunguid(In_LunguID  varch
java call oracle procudure setBoolean问题PLS-00306: wrong number or types of arguments in call to
http://www.itpub.net/forum.php?mod=viewthread&action=printable&tid=1186364 java代码如下 可能是不能传递boolean型参数所致,大家有什么好方法没有?谢谢 try {     clstmt = conn.prepareCall("{? = call my_test(?,?,?)}");     clstmt