ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:

Posted

技术标签:

【中文标题】ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:【英文标题】:ORA-06550:PLS-00306: wrong number or types of arguments in call;ORA-06550: 【发布时间】:2014-12-29 07:47:18 【问题描述】:

通过 vb.net 进行简单的插入操作,但出现错误:

ORA-06550:第 1 行,第 7 列: PLS-00306:调用“PROCEDURE_NAME”时参数的数量或类型错误 ORA-06550:第 1 行,第 7 列:

可能是我遗漏或忽略了某些东西。一些帮助将不胜感激。

SQL:

CREATE OR REPLACE procedure SG.PROCEDURE_NAME(
        TypeDefinitionFinal in Char,
        TypeValueFinal in Char,
        ValidFrom in Char,
        ValidTo in Char,
        MethodType in integer,
        MethodValue in number,
        Reason in Char,
        CurrentTimeStamp in Date,
        LoggedUser in Char,
        StoresList in Char
) as

begin

    INSERT INTO TABLE_NAME
      (TYPE_DEFINITION, TYPE_VALUE, VALID_FROM, VALID_TO, METHOD, VALUE, REASON, CREATE_TIMESTAMP, ENTERED_BY) 
    VALUES
       (TypeDefinitionFinal ,TypeValueFinal ,ValidFrom ,ValidTo ,MethodType ,MethodValue ,Reason ,CurrentTimeStamp ,LoggedUser );

end;
/

VB.NET 代码:

Dim OraCommand As New OracleCommand("SG.PROCEDURE_NAME", OraConnection)
OraCommand.CommandType = CommandType.StoredProcedure

OraCommand.Parameters.Add(New OracleParameter("TypeDefinitionFinal", OracleType.Char)).Value = TypeDefinitionFinal
OraCommand.Parameters.Add(New OracleParameter("TypeValueFinal", OracleType.Char)).Value = TypeValueFinal
OraCommand.Parameters.Add(New OracleParameter("ValidFrom", OracleType.Char)).Value = ValidFrom
OraCommand.Parameters.Add(New OracleParameter("ValidTo", OracleType.Char)).Value = ValidTo
OraCommand.Parameters.Add(New OracleParameter("MethodType", OracleType.Int32)).Value = MethodType
OraCommand.Parameters.Add(New OracleParameter("MethodValue", OracleType.Number)).Value = MethodValue
OraCommand.Parameters.Add(New OracleParameter("Reason", OracleType.Char)).Value = Reason
OraCommand.Parameters.Add(New OracleParameter("CurrentTimeStamp", OracleType.DateTime)).Value = CurrentTimeStamp
OraCommand.Parameters.Add(New OracleParameter("LoggedUser", OracleType.Char)).Value = LoggedUser
OraCommand.Parameters.Add(New OracleParameter("StoreList", OracleType.Char)).Value = StoreList

OraCommand.ExecuteNonQuery()

【问题讨论】:

VB.Net 代码中 CurrentTimeStamp 的值是多少 您最后的Add 指的是StoreList 而不是StoresList,但不确定它是否在这里使用了这些名称,如果是这样,它们是否都需要大写(因为它们过程声明中没有引用标识符)? Alex Poole,它是拼写错误的“StoresList”。你指出了问题,我的问题就解决了。非常感谢您的帮助。 同样的错误?还是权限错误?顺便说一句,如果您没有正确引用他们的名字,人们就不会知道您与他们交谈。使用“@”符号,后跟他们的名字。 IE,@AlexPoole,您应该将您的评论作为答案,以便将其标记为答案。 @Steve - 感谢您的 ping;我可能最终会回来检查,但谁知道呢。我已经把它变成了一个答案,但因为它是如此简单,我也投票关闭作为一个错字...... 【参考方案1】:

这只是一个参数名称的差异。在您的过程定义中,您有:

        StoresList in Char

但在您的 VB 代码中,您的名称略有不同,缺少 s

OraCommand.Parameters.Add(New OracleParameter("StoreList", OracleType.Char)).Value = StoreList

"StoreList" 更改为"StoresList",或将过程定义更改为StoreList - 只要它们匹配,您采用哪种方式都可以。

【讨论】:

以上是关于ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:的主要内容,如果未能解决你的问题,请参考以下文章

c++如何直接调用自己写的类中的函数,就像调用标准库中的函数那样

在C++中怎么调用一个js中的方法

java中API怎么调用啊?

MKPolygon 初始化错误“调用中的参数“interiorPolygons”缺少参数”/“调用中的额外参数”

如何正确调用 Parallel.ForEach 循环中的调用异步方法[重复]

函数递归调用过程中的调用堆栈的情况