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

时间:2014-12-29 07:47:19

标签: vb.net oracle stored-procedures arguments

通过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()

1 个答案:

答案 0 :(得分:1)

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

        StoresList in Char

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

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

"StoreList"更改为"StoresList",或将程序定义更改为StoreList - 只要它们匹配,您执行此操作的方式并不重要。