2014-12-29 2 views
0

Простая операция вставки с помощью vb.net, но получаю ошибку:ORA-06550: PLS-00306: неверное число или типы аргументов в вызове; ORA-06550:

ORA-06550: строка 1, столбец 7: PLS-00306: неверное число или типы аргументов в вызове «имя_процедуры» 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() 
+0

Что такое значение для CurrentTimeStamp в коде VB.Net – psaraj12

+2

Ваш последний 'Add' ссылается на' StoreList' вместо 'StoresList', но не уверен, что он использует имена здесь, и если да, если все они должны быть в верхнем регистре (поскольку они не указаны в декларации процедуры)? –

+0

Alex Poole, это был «StoresList» с ошибками. Вы указали на проблему, и моя проблема исправлена. Большое вам спасибо за вашу помощь. – LPP

ответ

1

Это просто имя параметра несоответствия. В вашем определении процедуры у вас есть:

 StoresList in Char 

Но в вашем коде VB у вас есть немного другое имя, пропуская в s:

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

Изменение "StoreList" к "StoresList" или изменить определение процедуры для StoreList - не имеет значения, каким образом вы это делаете, пока они совпадают.

Смежные вопросы