Проблема с передачей логического значения - хранимая процедура VBA ADODB Oracle - PullRequest
0 голосов
/ 04 декабря 2018

Попытка выполнить хранимую процедуру Oracle с использованием ADODB.Не было проблем, пока логическое значение не было добавлено в процедуру.Я думаю, что проблема с CreateParameter adBoolean DataTypeEnum.

Ошибка: неверное число или типы аргументов в вызове WEIGH_PACKAGE_PR

Oracle

PROCEDURE WEIGH_PACKAGE_PR
    (in_action_code         IN NUMBER,
     in_pass_num            IN NUMBER,
     in_cont_no             IN VARCHAR2,
     in_scale_id            IN VARCHAR2,
     in_current_user        IN NUMBER,
     in_bypassnumber        IN NUMBER,
     in_override_tarewt     IN BOOLEAN)

VBA

With db
  If .state = adStateClosed Then
   .ConnectionString = conStr
   .CursorLocation = adUseClient
   .Open
  End If
End With

With cmd
  .ActiveConnection = db
  .NamedParameters = True
  .CommandType = adCmdStoredProc
  .CommandText = "COMMON_SCALES_PK.WEIGH_PACKAGE_PR"
  .Parameters.Append .CreateParameter("in_action_code", adBigInt, adParamInput, , 1)
  .Parameters.Append .CreateParameter("in_pass_num", adBigInt, adParamInput, , 1)
  .Parameters.Append .CreateParameter("in_cont_no", adVarChar, adParamInput, 10, "I658638002")
  .Parameters.Append .CreateParameter("in_scale_id", adVarChar, adParamInput, 6, "T05R02")
  .Parameters.Append .CreateParameter("in_current_user", adBigInt, adParamInput, , 3737)
  .Parameters.Append .CreateParameter("in_bypassnumber", adBigInt, adParamInput, , Null)

  .Parameters.Append .CreateParameter("in_override_tarewt", adBoolean, adParamInput, 1, False)

 Set rst = .Execute()

End With

1 Ответ

0 голосов
/ 04 декабря 2018

До Oracle 12.1 было невозможно использовать типы данных PL / SQL в качестве значений привязки, см. Изменения в Oracle Database 12c Release 1 (12.1)

Также драйвер ADODB долженподдерживать такие типы данных.

Вы не сообщили нам ни о том, какую версию Oracle вы используете, ни какой драйвер ADODB.Если вы все еще используете древний поставщик Microsoft MSDAORA, то он наверняка не будет работать со значениями BOOLEAN.

...