Oracle Ref Cursor ADODB - Почему я получаю PLS-00306 неверное количество типов аргументов - PullRequest
0 голосов
/ 12 декабря 2018

Попытка вернуть набор записей из Oracle.Процедура имеет входной параметр с типом данных Number и входным / выходным параметром с Oracle ref cursor datatype.

Получение ошибки:

PLS-00306 неверное количество типов аргументов при вызове "get_random_tube_colors_pr".

Oracle

procedure get_random_tube_colors_pr(in_tube_color_id in number,
                                tubeset in out tubetab)

VBA

conStr = "User ID=ops$scxpoly;Password=password;Data Source=source;Provider=OraOLEDB.Oracle;"

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

With cmd
    .ActiveConnection = db
    .NamedParameters = False    
    .CommandType = adCmdStoredProc
    .CommandText = "OPS$SCXPOLY.mfg_tube_colors_pk.get_random_tube_colors_pr"       
    .Parameters.Append .CreateParameter("in_tube_color_id", adBigInt, adParamInput, , 2679)
    .Properties("PLSQLRSet") = True
    Set rst = .Execute()
    MsgBox Err.Number & vbNewLine & Err.Description
End with  

Я закомментировал .CreateParameter, вызывающий тип данных курсора Oracle:

'   .Parameters.Append .CreateParameter("tubeset", adVariant, adParamReturnValue)

Но та же ошибка - Вызов хранимой процедуры Oracle с VBA с использованием рефкурсора

Добавлен Properties("PLSQLRSet") = TRUE, но все еще та же проблема - https://docs.oracle.com/cd/B28359_01/win.111/b28431/using.htm

Также установлен .NamedParameters = True, нет.

Заранее спасибо за вашу помощь.

...