適用対象
説明
OraSubscriptionsコレクションにサブスクリプションを追加します。
使用方法
orasubscriptions.Add Name, DbeventsHdl, Ctx
引数
このメソッドの引数は、次のとおりです。
| 変数 | 説明 |
|---|---|
[in] Name |
対象となるデータベース・イベント。このメソッドより前に、適切なイベント・トリガーおよびAQキューを設定する必要があります。
|
[in] DbeventsHdl |
データベース・イベント・ハンドラ。対象のデータベース・イベントの起動時にコールされるNotifyDBEventsメソッドを実装するIDispatchインタフェースです。 |
[in] Ctx |
NotifyDbEventsメソッドがコールされるときにアプリケーションが渡す必要があるコンテキスト固有の情報。 |
備考
データベース・イベントのサブスクリプションを登録するには、Addメソッドのコール時に、対象のサブスクリプションを識別する名前と、イベントを処理するdbeventハンドラの名前を渡す必要があります。データベース・イベントのサポートに必要なキューおよびイベント・トリガーは、サブスクリプションの起動より前に設定してください。
dbeventハンドラは、NotifyDBEventsメソッドを実装するオートメーション・オブジェクトであることが必要です。
NotifyDBEventsハンドラ
NotifyDBEventsメソッドは、対象のデータベース・イベントが起動されたときに、Oracle Objects for OLEによってコールされます。
Oracle Databaseイベントに対するキューおよびトリガーの設定方法の詳細は、『Oracle Database概要』のシステム・イベントとユーザー・イベントのトリガーに関する説明を参照してください。
このメソッドの構文は、次のとおりです。
Public Function NotifyDBEvents(ByVal Ctx As Variant, ByVal Payload As Variant
変数
このメソッドの変数は、次のとおりです。
| 変数 | 説明 |
|---|---|
[in] Ctx |
アプリケーションによってOraSubscriptions.Addメソッドに渡されます。アプリケーションがdbeventハンドラに渡す必要があるコンテキスト依存の情報です。 |
[in] Payload |
この通知のペイロード。
イベント・トリガーおよびキューを設定することによって、データベース・イベントが起動します。この場合の |
例
例: データベース・イベントが通知されるようにアプリケーションを登録する方法
次の例では、アプリケーションが、データベース・ログイン・イベント(データベースへのすべてのログインなど)の通知をサブスクライブします。ユーザーがデータベースにログインすると、サブスクリプション時に渡されたDBEventsHdlrのNotifyDBEventsメソッドがコールされます。コンテキスト依存の情報およびイベント固有の情報がNotifyDBEventsメソッドに渡されます。
この例のDBEventsHdlrは、後で定義されるDBEventClsです。
メイン・アプリケーション:
' First instantiate the dbevent handler. The dbevent notification
' will fire the NotifyDBEvents on the callback handler.
Public DBEventsHdlr As New DBEventCls
Private Sub Form_Load()
Dim gOraSession As Object
Dim gOraSubscriptions As OraSubscriptions
Dim gOraDatabase As OraDatabase
'Create the OraSession Object
Set gOraSession = CreateObject("OracleInProcServer.XOraSession")
'Create the OraDatabase Object by opening a connection to Oracle.
Set gOraDatabase = gOraSession.DbOpenDatabase
("ora90.us.oracle.com", "pubsub/pubsub",
ORADB_ENLIST_FOR_CALLBACK)
Set gOraSubscriptions = gOraDatabase.Subscriptions
gOraSubscriptions.Add "PUBSUB.LOGON:ADMIN", DBEventsHdlr,
gOraDatabase
gOraSubscriptions(0).Register
MsgBox "OK"
End Sub
NotifyDBEventsメソッドを定義するデータベース・イベント・ハンドラ・クラス。
Public countofMsgs as integer
Public Function NotifyDBEvents(Ctx As Variant, Payload As Variant )
On error goto NotifyMeErr
MsgBox "Retrieved payload " + Payload
' do something - here the subscription is unregistered after
' receiving 3 notifications
countofMsgs = countofMsgs + 1
If countofMsgs > 3 Then
Ctx.Subscriptions(0).UnRegister
End If
Exit Sub
NotifyMeErr:
Call RaiseError(MyUnhandledError, "newcallback:NotifyMe Method")
End Sub
|
関連項目:
|