引数
このメソッドの引数は、次のとおりです。
変数 | 説明 |
---|---|
[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
関連項目:
|