Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » QAnywhere » QAnywhere クライアント・アプリケーションの作成 » QAnywhere API の初期化

 

SQL アプリケーションの設定

QAnywhere SQL を使用すると、QAnywhere .NET、C++、Java API のほどんどのメッセージング機能を SQL で実行できます。たとえば、メッセージの作成、メッセージ・プロパティと内容の設定や取得、メッセージの送受信、メッセージ同期のトリガ、メッセージ・ストア・プロパティの設定と取得などの機能を実行できます。

QAnywhere SQL で生成されたメッセージを、プログラミング API で作成されたクライアントで受信することもできます。JMS コネクタがサーバ上で設定されている場合は、JMS クライアントがこのメッセージを受信することもできます。同様に、QAnywhere .NET、C++、Java API、または JMS のクライアントで生成されたメッセージを、QAnywhere SQL で受信することもできます。

QAnywhere SQL メッセージングは、ユーザ・トランザクションと共存できます。つまり、トランザクションをコミットすると、その接続でのすべての QAnywhere 操作がコミットされます。

QAnywhere クライアント・アプリケーションの作成を参照してください。

パーミッション

QAnywhere ストアド・プロシージャを実行するパーミッションを自動的に与えられるのは、DBA 権限を持つユーザだけです。ユーザにパーミッションを付与するには、DBA 権限を持つユーザが ml_qa_grant_messaging_permissions プロシージャを呼び出す必要があります。

ml_qa_grant_messaging_permissionsを参照してください。

受信確認モード

QAnywhere SQL API では、IMPLICIT_ACKNOWLEDGEMENT と EXPLICIT_ACKNOWLEDGEMENT のどちらのモードもサポートしません。SQL API を介するメッセージは、すべてトランザクション志向です。

次の例では、在庫テーブルのトリガを作成します。このトリガは、ある品目の在庫が特定のしきい値を下回ると、メッセージを送信します。メッセージは、トリガを呼び出したトランザクションがコミットされた後で送信されます。トランザクションがロールバックされた場合、メッセージは送信されません。

CREATE TRIGGER inventory_trigger AFTER UPDATE ON inventory
REFERENCING old AS oldinv new AS newinv
FOR EACH ROW
begin
   DECLARE msgid VARCHAR(128);
   IF oldinv.quantity > newinv.quantity AND newinv.quantity < 10 THEN
      -- Create the message
      SET msgid = ml_qa_createmessage();
      -- Set the message content
      CALL ml_qa_settextcontent( msgid,
         'Inventory of item ' || newinv.itemname
            || ' has fallen to only ' || newinv.quantity );
      -- Make the message high priority
      CALL ml_qa_setpriority( msgid, 9 );
      -- Set a message subject
      CALL ml_qa_setstringproperty( msgid,
         'tm_Subject', 'Inventory low!' );
      -- Send the message to the inventoryManager queue
      CALL ml_qa_putmessage( msgid,
         'inventoryManager' );
   end if;
end
参照