機械翻訳について

SQL関数としてAzure関数を起動するステップ

HTTPトリガーを使用して、データベース内のSQL関数としてAzureリモート関数を呼び出すステップを示します。

AzureファンクションをSQLファンクションとして起動するには、APIエンドポイントを介してそれぞれのクラウド・ファンクションを参照およびコールするSQLラッパー・ファンクションのカタログを作成します。 このカタログを作成する前に、このカタログで参照するために必要なAzureファンクションが作成されていることを前提としています。

  1. Azureファンクションにアクセスするには、Azureサービス・プリンシパルをAutonomous Databaseとともに使用する必要があります。 「Webサイト貢献者」ロールを、「アクセス・コントロール」 (IAM)の下のAzureファンクション・アプリケーションのAzureサービス・プリンシパルに付与する必要があります。
  2. カタログを作成します。

    カタログは、APIエンドポイントを介してそれぞれのクラウド関数を参照およびコールするラッパー関数のコレクションです。

    Azure関数のカタログを作成する例。

    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
            credential_name  => 'AZURE$PA', 
            catalog_name     => 'AZURE_DEMO_CATALOG', 
            service_provider => 'AZURE',
            cloud_params     => '{"subscription_id":"XXXXXXXXXXXXXXXXXXXXXXXX_example"}'
     );
    END;
    /
    

    CLOUD_PARAMSSUBSCRIPTION_ID値は、Azureファンクション・アプリケーションのsubscription_idです。

    これにより、AZURE_DEMO_CATALOGカタログが作成され、指定されたSUBSCRIPTION_IDのすべての関数がカタログ化されます。

    詳細については、「CREATE_CATALOGプロシージャ」を参照してください。 「DBA_CLOUD_FUNCTION_CATALOGビュー」ビューおよび「USER_CLOUD_FUNCTION_CATALOGビュー」ビューを問い合せると、データベース内のすべてのカタログのリストを取得できます。

  3. カタログ内の関数をリストできます。

    次に、Azureファンクションをリストする例を示します:

    VAR function_list CLOB;
    
    BEGIN
     DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
        credential_name  => 'AZURE$PA',
        catalog_name     => 'AZURE_DEMO_CATALOG',
        function_list    => :function_list
    );
    END;
    /
    
    SELECT JSON_QUERY (:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual;
    

    詳細については、「LIST_FUNCTIONSプロシージャ」を参照してください。

  4. DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONSを実行してラッパーSQL関数を作成します。 次のいずれかのメソッドを使用して、それぞれのクラウド関数をコールするラッパーSQL関数をカタログに作成できます:
    • SYNC_FUNCTIONS: SYNC_FUNCTIONSは、カタログ内のラッパー関数をAzure関数の完全なリストと自動的に同期(作成または削除)する、最も迅速で簡単なメソッドです。 たとえば:

    
    BEGIN
     DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
            catalog_name => 'AZURE_DEMO_CATALOG'
     );
    END;
    /
    

    これにより、カタログに新しい関数を追加し、カタログから削除された関数のラッパーを削除するためのPL/SQLラッパーが作成されます。

    ノート:

    Azureファンクション・アプリケーションでAzureファンクションを追加、削除または無効化する場合は、SYNC_FUNCTIONSを実行して、カタログ内の対応するPL/SQLラッパーを更新する必要があります。

    次の問合せを実行して、同期を確認します。

    
    SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
    

    ノート:

    このコマンドを実行するには、現在のユーザーをノートにとります。

    詳細については、「SYNC_FUNCTIONSプロシージャ」を参照してください。

    • AZURE_DEMO_CATALOGを使用して、それぞれのAzureファンクションをコールするSQLファンクションをカタログに手動で作成できます。

    AZURE_DEMO_CATALOGカタログにファンクションを作成する例。

    BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
      credential_name => 'AZURE$PA',
      catalog_name    => 'AZURE_DEMO_CATALOG', 
      function_name   => 'azure_testfunc', 
      function_id     => 'function_id_path',
      input_args      => :function_args
    );
    END;
    /
    

    ノート:

    関数名の最大長は100文字に制限されています。

    これにより、AZURE_DEMO_CATALOGカタログにAZURE_TESTFUNCファンクションが作成されます。

    カタログ内のAZURE_TESTFUNCファンクションは、FUNCTION_IDパラメータによってサブスクリプションが参照されるそれぞれのAzureファンクションへの参照です。 カタログ内のファンクションを引数とともに呼び出すと、対応するAzureファンクションが実行され、ファンクションによって返される出力が提供されます。

    「DBA_CLOUD_FUNCTIONビュー」ビューおよび「USER_CLOUD_FUNCTIONビュー」ビューを問い合せて、データベース内のすべての関数のリストを取得できます。

    詳細については、「CREATE_FUNCTIONプロシージャ」を参照してください。

    詳細については、「AzureファンクションHTTPトリガー」を参照してください。

  5. 関数の作成後、DESCRIBEを実行して呼び出すことができます。
    DESC AZURE_TESTFUNC
    SELECT AZURE_TESTFUNC(NULL) FROM dual;

    これにより、AZURE_DEMO_CATALOGカタログのファンクション参照/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_exampleをコールして、AZURE_TESTFUNCファンクションが起動されます。

  6. DROP_FUNCTIONプロシージャを使用して、既存の関数を削除できます。 たとえば:
    EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AZURE_DEMO_CATALOG', FUNCTION_NAME => 'AZURE_TESTFUNC');
    
    

    これにより、AZURE_DEMO_CATALOGカタログからAZURE_TESTFUNC関数が削除されます。

    詳細については、「DROP_FUNCTIONプロシージャ」を参照してください。

  7. DROP_CATALOGプロシージャを使用して、既存のカタログを削除できます。 たとえば:
    BEGIN
        DBMS_CLOUD_FUNCTION.DROP_CATALOG (
          catalog_name     => 'AZURE_DEMO_CATALOG'
      );
    END;
    /
    

    これにより、データベースからAZURE_DEMO_CATALOGが削除されます。

    詳細については、「DROP_CATALOGプロシージャ」を参照してください。