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

Ковыряю 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
30.08.2006, 20:05:17
    #33953807
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЗАПУСК ПРОЦЕДУР на ORACLE
Писать хранимую процедуру и запускать ее. Сверхдлинные запросы это явный признак плохого дизайна клиент-серверного обмена данными.
Запускать хранимую процедуру точно так же как запускаешь процедуру из любого ODBC клиента. Возьми доку на Оракл и посмотри там. Должно быть что-то вроде:
Код: plaintext
execute sp_my_strored_procedure  1 ,  2 , 'abcd';
Давно с Ораклом не работал, не помню уже.

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

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


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