powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ЗАПУСК ПРОЦЕДУР на ORACLE
5 сообщений из 5, страница 1 из 1
ЗАПУСК ПРОЦЕДУР на ORACLE
    #33951386
rujim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, всем!

Ковыряю VB под Excel и запускаю запросы. Выборки проходят на ура. Не получается вот что:

1) При количестве символов более 255 в запросе не влазит в строковый параметр полная строка.
2) Не получается выполнение процедуры на сервере Оракл. (Вернее не знаю, как это правильно сделать).

Ниже приведен текст запроса, который нормально выполняется:

Dim text as String

txt = "select * from dual"

With Selection.QueryTable
.Connection = "ODBC;DSN=Database;UID=user;PWD=passwd;SERVER=db;"
.CommandText = txt
.Refresh BackgroundQuery:=False
End With

Подскажите, плиз, как правильно решить задачу с большим запросом (400-500 символов) с параметрами.
...
Рейтинг: 0 / 0
ЗАПУСК ПРОЦЕДУР на ORACLE
    #33953807
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писать хранимую процедуру и запускать ее. Сверхдлинные запросы это явный признак плохого дизайна клиент-серверного обмена данными.
Запускать хранимую процедуру точно так же как запускаешь процедуру из любого ODBC клиента. Возьми доку на Оракл и посмотри там. Должно быть что-то вроде:
Код: plaintext
execute sp_my_strored_procedure  1 ,  2 , 'abcd';
Давно с Ораклом не работал, не помню уже.

QueryTable.CommandText в принципе не поддерживает строки длинее 255. Отлито из бронзы, руками не трогать.
...
Рейтинг: 0 / 0
ЗАПУСК ПРОЦЕДУР на ORACLE
    #33954288
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
давно было (может и изменилось что с тех пор) требование к имени запускаемых процедур, функций и пакетов - заглавные буквы
...
Рейтинг: 0 / 0
ЗАПУСК ПРОЦЕДУР на ORACLE
    #33957583
rujim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы!

Я реализовал это через Oracle Objects for OLE.

Тут все, что нужно для написания программы:
http://private.peterlink.ru/antonsh/oo4o.htm

Я вначале запускаю на выполнение процедуру макросом, которая формирует отчет в таблицу. А затем я делаю выборку с помощью Microsoft Query.

Код: plaintext
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.
31.
32.
33.
34.
Sub mc_First

' Variables
Dim OraSession As Object
Dim OraDatabase As Object

' Open Database
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("database", "user / password",  0 &)

' Input Value of Parameters
    Range("E1").Select
    a = ActiveCell.Value
    Range("G1").Select
    b = ActiveCell.Value
    Range("E2").Select
    c = ActiveCell.Value

' Query    
sqlQuery = "BEGIN pr_Zvit('" & a & "','" & b & "','" & c & "'); COMMIT; END;"

' Execute
OraDatabase.ExecuteSQL (sqlQuery)

MsgBox ("Ok!!!")
    
    Range("A4").Select

' Clean    
Set EmpDynaset = Nothing
Set OraDatabase = Nothing
Set OraSession = Nothing

End Sub
...
Рейтинг: 0 / 0
ЗАПУСК ПРОЦЕДУР на ORACLE
    #33959440
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rujimЯ реализовал это через Oracle Objects for OLE.Это излишне сложно. Ковыряй дальше.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ЗАПУСК ПРОЦЕДУР на ORACLE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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