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

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

Нужна помощь. Есть 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
14.08.2012, 10:54
    #37915550
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов из Excel 2007...2010 процедуры/функции с out параметрам CLOB
Hazard,

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

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


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