powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
5 сообщений из 5, страница 1 из 1
Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
    #37915510
Hazard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, доброго времени суток.

Нужна помощь. Есть vba в excel в котором происходи вызов oracle функции
...
Рейтинг: 0 / 0
Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
    #37915516
Hazard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, доброго времени суток.

Нужна помощь. Есть vba в excel в котором происходи вызов oracle функции

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    Dim OraSession As Object 'OraSession
    Dim OraDatabase As Object 'OraDatabase
    Dim OraClob As Object 'OraClob
    
    On Error GoTo exit_GetData
    
    'Create the OraSession Object.
    Set OraSession = CreateObject("OracleInProcServer.XOraSession")

    'Create the OraDatabase Object by opening a connection to Oracle.
    Set OraDatabase = OraSession.OpenDatabase(Database, UserName & "/" & Password, 0&)

    ' Set query parameters
    OraDatabase.Parameters.Add "PARAMS", Parameters, ORAPARM_INPUT, ORATYPE_VARCHAR2
    OraDatabase.Parameters.Add "RESULT", Empty, ORAPARM_OUTPUT, ORATYPE_CLOB
    'OraDatabase.Parameters("RESULT").serverType = ORATYPE_CLOB

    ' Execute query
    OraDatabase.ExecuteSQL _
        "BEGIN" & vbLf & _
        "    :RESULT := REPORTGENERATOR.PROCESSREQUEST(:PARAMS);" & vbLf & _
        "END;"
    
    ' Get CLOB result
    Set OraClob = OraDatabase.Parameters("RESULT").Value
    If OraClob.IsNull Then
        Err.Raise vbObjectError, , "No data is available"
    ElseIf OraClob.Size = 0 Then
        Err.Raise vbObjectError, , "No data is available"
    End If



по непонятному стецению обстоятельств теперь этот код не работает. Вызывает ошибку "Object variable or With block variable not set " при выполнении

Set OraSession = CreateObject("OracleInProcServer.XOraSession")

Отчего почему, не понятно. По форумам пишут, что проблема в 64битном клиенте... но у меня установлен 32 битный клиент.
В общем, посоветуйте, какие есть еще варианты вызова и получения данных из Oracle (CLOB). Попытки использовать ADO пока успехом не увенчались.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
   Dim con As ADODB.Connection
   Dim cmd As ADODB.Command
   Dim prminput As ADODB.Parameter
   Dim prmoutput As ADODB.Parameter
   
   On Error GoTo exit_GetData
   
   Set con = New ADODB.Connection
   con.Open "provider=MSDAORA.Oracle;user id=" & UserName & ";password=" & Password & ";data source=" & Database
'   con.Open "dsn=orcl;uid=scott;pwd=tiger"

  
   Set cmd = New ADODB.Command
   cmd.CommandText = "REPORTGENERATOR.PROCESSREQUEST"
   cmd.ActiveConnection = con
   cmd.CommandType = adCmdStoredProc
   cmd.NamedParameters = True
   
   Set prmoutput = cmd.CreateParameter("p_result", adLongVarChar, adParamOutput, 2147483647, "")
   Set prminput = cmd.CreateParameter("p_params", adChar, adParamInput, 2000, Parameters)
   cmd.Parameters.Append prmoutput
   cmd.Parameters.Append prminput
   cmd.Execute
   con.Close



ругается что параметр определен неверно на строке

cmd.Parameters.Append prmoutput

Если у кого есть, подкиньте пример работы с CLOB через ADO или может как то можно из excel vba обратиться к Oracle ODP .NET библиотекам?
...
Рейтинг: 0 / 0
Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
    #37915550
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hazard,

почему у вас тип параметра задан adLongVarChar, если поле - CLOB ?
имхо, должно быть - adLongVarBinary или adVarBinary ...
...
Рейтинг: 0 / 0
Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
    #37915611
Hazard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112,

к сожалению изменение типа параметра на предложенные не меняют текст ошибки при добавлении параметра
...
Рейтинг: 0 / 0
Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
    #37915613
Hazard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скриншот ошибки...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]