ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

Add(OraSubscriptionsコレクション)メソッド

説明

OraSubscriptionsコレクションにサブスクリプションを追加します。

使用方法

orasubscriptions.Add Name, DbeventsHdl, Ctx 

引数

このメソッドの引数は、次のとおりです。

変数 説明
[in] Name 対象となるデータベース・イベント。このメソッドより前に、適切なイベント・トリガーおよびAQキューを設定する必要があります。

Nameは、シングル・コンシューマ・キューに対する登録の場合は文字列'SCHEMA.QUEUE'の形式、複数コンシューマ・キューに対する登録の場合は文字列'SCHEMA.QUEUE:CONSUMER_NAME'の形式のサブスクリプション名です。

Name文字列には大文字を使用してください。

[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 この通知のペイロード。

イベント・トリガーおよびキューを設定することによって、データベース・イベントが起動します。この場合のPayloadとは、イベントのトリガー時にキューにエンキューされたペイロード(存在する場合)を表します。


例: データベース・イベントが通知されるようにアプリケーションを登録する方法

次の例では、アプリケーションが、データベース・ログイン・イベント(データベースへのすべてのログインなど)の通知をサブスクライブします。ユーザーがデータベースにログインすると、サブスクリプション時に渡されたDBEventsHdlrNotifyDBEventsメソッドがコールされます。コンテキスト依存の情報およびイベント固有の情報が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

関連項目: