|
|
|
| http://download.oracle.com/docs/cd/B28359_01/win.111/b28378/basfeat.htm
Option Explicit
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim OraFields As OraFields
Sub test0040()
' Create the OraSession Object. The argument to CreateObject is the
' name by which the OraSession object is known to the OLE system.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
' Create the OraDatabase Object by opening a connection to Oracle.
Set OraDatabase = OraSession.OpenDatabase("вашабаза", логин/пароль", 0&)
'--запускпроцедуры
OraDatabase.ExecuteSQL ("begin " + usr + cnn7(77) + ";end;")
' Create the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset(cnn7(78), 0&)
' You can now display or manipulate the data in the dynaset. For example:
Set OraFields = OraDynaset.fields
OraDynaset.MoveFirst
Do While Not OraDynaset.EOF
Debug.Print OraFields("role").value
OraDynaset.MoveNext
Loop
OraDatabase.Close
End Sub
Sub cancelling()
Dim OraDatabase As OraDatabase
Dim OraStmt As OraSqlStmt
Dim stat As Long
Dim OraSess As OraSession
Set OraSess = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSess.OpenDatabase("вашабаза", логин/пароль", 0)
'execute the select statement with NONBLOCKING mode on
Set OraStmt = OraDatabase.CreateSql("select count(*) from схема.большаятаблица", ORASQL_NONBLK)
'Check if the call has completed
stat = OraStmt.NonBlockingState
If stat = ORASQL_STILL_EXECUTING Then
MsgBox "Cancelling the asynchronous operation that is underway"
OraStmt.Cancel
End If
End Sub
|
пока что доволен
пойду разрабатывать
з.ы. OLEDB пока в стойло | |
|
| |
|
|
|
| а "вашабаза" подразумевает и адрес сервера тоже? | |
|
| |
|
|
|
| tns name
слухай, а я вот недопонял чето, типа класс написал почти, который, в зависимости от параметра,
работает или через ADO или через OO4O.... запускаю тестовую процедуринку,
все запускается как надо, но во время выполнения грузится процессор на клиенте
поправь меня если я не прав - я в цикле while wend, это он грузит так?
ведь обычный вариант, который работал у меня до этого, работает через форму , которая по таймеру считывает состояние запроса, не грузит проц!
стало быть есть вероятность того, что когда я допишу класс до формы и таймера, то не будет грузить? или достаточно в цикле слип на секунду сделать(пока тестирую :))? | |
|
| |
|
|
|
| а может стоит с WithEvents создавать экземпляр коннекшена? и рекордсета?
во всяком случае для ado
тогда можно будет использовать
_ConnectComplete
и
_FetchComplete
для контроля | |
|
| |
|
|
|
| помогло APIшное
Sleep 1 | |
|
| |
|
|
|
|
| открыл и закрыл... ну не <цензоред>?
в асинхронном режиме ведь только нон-sql и pl/sql
остальное через динасет ейвойный, но отнюдь не асинхронно и без возможности прервать...
вижу пока что три способа(?):
1. написать процедуру, которая бы по sql запросу возвращала бы результат (ref cursor)
но чо-то я тихо подозреваю, что надо будет прописывать типы полей и все такое :/
2. использовать этот нонблокед асинхронный оо4о, предварительно насоздавав параметров, которые бы он мне потом в конструкции into возвернул... но что-то мне кажется это совсем не метод :) ыыыы
3. таки использовать ADODB и в отдельном потоке, но тут встает вопрос о передаче данных между потоками
короче все дерьмо :) | |
|
| |