外部統合セットアップリファレンス

次のデータベースオブジェクトは、ファイル setup_external_integration.sql を通して作成されます。

PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_NAMES()

このプロシージャは、他のプロシージャや関数を変更します。そのシグネチャは、 EXTERNAL ACCESS INTEGRATIONSECRET オブジェクト名を持つ配列でプロシージャの引数として渡され、以下のキーで接続構成に格納されます。

  • EXTERNAL ACCESS INTEGRATION オブジェクト識別子のための external_access_configuration

  • SECRET オブジェクト識別子のための secret

シークレットは credentials キーで変更されたプロシージャ/関数に添付されます。既定のプロシージャは、どのアプリケーション・ユーザー・ロールでも使用できません。

プロシージャ署名

CREATE OR REPLACE PROCEDURE PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_NAMES(methods ARRAY)
    RETURNS VARIANT
    LANGUAGE SQL
    [...]
Copy

条件:

  • methods ARRAY は、プロシージャ/関数のシグネチャを varchar で表した配列を表します。 ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()') などです。

返される値

プロシージャは常に標準コネクタ応答構造を持つバリアントを返します。

プロシージャ実行が成功した場合:

{
  "response_code": "OK",
  "message": "Successfully set up <number> method(s)."
}
Copy

注釈

引数として渡されたプロシージャ/関数シグネチャが既存のオブジェクトを表していない場合や、アプリケーションがこれらのオブジェクトにアクセスできない場合でも、プロシージャの実行は正常に終了します。この種のプロシージャ/関数の変更プロセスはスキップされ、一般的なプロセスが続行されます。

失敗した場合:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>",
  "SQLCODE": "<code of a thrown exception>",
  "SQLERRM": "<error message of a thrown exception>",
  "SQLCODE": "<sql code of a thrown exception>"
}
Copy

注意

実行中にエラーが発生しても、プロシージャはエラーをスローしません。各エラーはコネクタのレスポンスにラップされ、適切な response_code にマッピングされます。これにより、アプリケーションのインストール中にプロシージャの結果を検証し、 setup.sql で安全に使用することができます(そうでない場合、未処理のエラーがあるとアプリケーションのインストールプロセスが中断され、終了する可能性があります)。

考えられるエラー:

  • EAI_UNAVAILABLE - EXTERNAL ACCESS INTEGRATION オブジェクトが存在しないか、アプリケーションに USAGE 権限がない場合。

  • SECRET_UNAVAILABLE - SECRET オブジェクトが存在しないか、アプリケーションに少なくとも READ 権限がない場合。

  • INTERNAL ERROR - このレスポンスコードは、予期せぬエラーが発生した場合に返されます。

使用例

CALL PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_NAMES(ARRAY_CONSTRUCT(
    'PUBLIC.TEST_CONNECTION()',
    'PUBLIC.FINALIZE_CONFIGURATION(VARIANT)',
    'PUBLIC.TEMPLATE_WORKER(NUMBER, STRING)')
);
Copy

PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_REFERENCES()

このプロシージャは他のプロシージャや関数を変更します。そのシグネチャはプロシージャの引数として配列で渡され、 EXTERNAL ACCESS INTEGRATIONSECRET オブジェクトがアプリケーションリファレンスに代入されます。このプロシージャを使用する場合、以下の名前でリファレンスを登録する必要があります。

  • EAI_REFERENCE - EXTERNAL ACCESS INTEGRATION オブジェクトへのリファレンス。

  • SECRET_REFERENCE - SECRET オブジェクトへのリファレンス。

シークレットは credentials キーで変更されたプロシージャ/関数に添付されます。既定のプロシージャは、どのアプリケーション・ユーザー・ロールでも使用できません。

プロシージャ署名

CREATE OR REPLACE PROCEDURE PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_REFERENCES(methods ARRAY)
    RETURNS VARIANT
    LANGUAGE SQL
    [...]
Copy

条件:

  • methods ARRAY は、プロシージャ/関数のシグネチャを varchar で表した配列を表します。 ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()') などです。

返される値

プロシージャは常に標準コネクタ応答構造を持つバリアントを返します。

プロシージャ実行が成功した場合:

{
  "response_code": "OK",
  "message": "Successfully set up <number> method(s)."
}
Copy

注釈

引数として渡されたプロシージャ/関数シグネチャが既存のオブジェクトを表していない場合や、アプリケーションがこれらのオブジェクトにアクセスできない場合でも、プロシージャの実行は正常に終了します。この種のプロシージャ/関数の変更プロセスはスキップされ、一般的なプロセスが続行されます。

失敗した場合:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>",
  "SQLCODE": "<code of a thrown exception>",
  "SQLERRM": "<error message of a thrown exception>",
  "SQLCODE": "<sql code of a thrown exception>"
}
Copy

注意

実行中にエラーが発生しても、プロシージャはエラーをスローしません。各エラーはコネクタのレスポンスにラップされ、適切な response_code にマッピングされます。これにより、アプリケーションのインストール中にプロシージャの結果を検証し、 setup.sql で安全に使用することができます(そうでない場合、未処理のエラーがあるとアプリケーションのインストールプロセスが中断され、終了する可能性があります)。

考えられるエラー:

  • EAI_UNAVAILABLE - EXTERNAL ACCESS INTEGRATION オブジェクトが存在しないか、アプリケーションに USAGE 権限がない場合。

  • SECRET_UNAVAILABLE - SECRET オブジェクトが存在しないか、アプリケーションに少なくとも READ 権限がない場合。

  • INTERNAL ERROR - このレスポンスコードは、予期せぬエラーが発生した場合に返されます。

使用例

CALL PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_REFERENCES(ARRAY_CONSTRUCT(
    'PUBLIC.TEST_CONNECTION()',
    'PUBLIC.FINALIZE_CONFIGURATION(VARIANT)',
    'PUBLIC.TEMPLATE_WORKER(NUMBER, STRING)')
);
Copy

PUBLIC.SETUP_EXTERNAL_INTEGRATION()

これは上記のプロシージャのrawバージョンで、それらも使用しています。このプロシージャは、他のプロシージャや関数を変更します。そのシグネチャは、プロシージャの引数として渡される配列で、 EXTERNAL ACCESS INTEGRATION と、 SECRET オブジェクト名で渡されます。このプロシージャでは、外部アクセスに関連するオブジェクトの情報をどのようにプロシージャに提供するか、開発者が自由に決めることができます。

シークレットは credentials キーで変更されたプロシージャ/関数に添付されます。既定のプロシージャは、どのアプリケーション・ユーザー・ロールでも使用できません。

このプロシージャの使用は、接続構成で定義済みの名前のリファレンスや、定義済みのキーの基になるオブジェクト名を使用する上記のプロシージャを使用する可能性がない場合にのみ推奨されます。

プロシージャ署名

CREATE OR REPLACE PROCEDURE PUBLIC.SETUP_EXTERNAL_INTEGRATION(eai_idf VARCHAR, secret_idf VARCHAR, methods ARRAY)
    RETURNS VARIANT
    LANGUAGE SQL
    [...]
Copy

条件:

  • eai_idf VARCHAR - EXTERNAL_ACCESS_INTEGRATION オブジェクトの識別子。リファレンス名を渡したい場合は、次のようにラップする必要があります: 'reference(\'<reference_name>\')'

  • secret_idf VARCHAR - SECRET オブジェクトの識別子。リファレンス名を渡したい場合は、次のようにラップする必要があります: 'reference(\'<reference_name>\')'

  • methods ARRAY は、プロシージャ/関数のシグネチャを varchar で表した配列を表します。 ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()') などです。

返される値

プロシージャは常に標準コネクタ応答構造を持つバリアントを返します。

プロシージャ実行が成功した場合:

{
  "response_code": "OK",
  "message": "Successfully set up <number> method(s)."
}
Copy

注釈

引数として渡されたプロシージャ/関数シグネチャが既存のオブジェクトを表していない場合や、アプリケーションがこれらのオブジェクトにアクセスできない場合でも、プロシージャの実行は正常に終了します。この種のプロシージャ/関数の変更プロセスはスキップされ、一般的なプロセスが続行されます。

失敗した場合:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>",
  "SQLCODE": "<code of a thrown exception>",
  "SQLERRM": "<error message of a thrown exception>",
  "SQLCODE": "<sql code of a thrown exception>"
}
Copy

注意

実行中にエラーが発生しても、プロシージャはエラーをスローしません。各エラーはコネクタのレスポンスにラップされ、適切な response_code にマッピングされます。これにより、アプリケーションのインストール中にプロシージャの結果を検証し、 setup.sql で安全に使用することができます(そうでない場合、未処理のエラーがあるとアプリケーションのインストールプロセスが中断され、終了する可能性があります)。

考えられるエラー:

  • EAI_UNAVAILABLE - EXTERNAL ACCESS INTEGRATION オブジェクトが存在しないか、アプリケーションに USAGE 権限がない場合。

  • SECRET_UNAVAILABLE - SECRET オブジェクトが存在しないか、アプリケーションに少なくとも READ 権限がない場合。

  • INTERNAL ERROR - このレスポンスコードは、予期せぬエラーが発生した場合に返されます。

使用例

CALL PUBLIC.SETUP_EXTERNAL_INTEGRATION(
    'EXAMPLE_EAI_IDF',
    'reference(\'CUSTOM_REFERENCE_NAME\')',
    ARRAY_CONSTRUCT('PUBLIC.TEST_CONNECTION()',
    'PUBLIC.FINALIZE_CONFIGURATION(VARIANT)',
    'PUBLIC.TEMPLATE_WORKER(NUMBER, STRING)')
);
Copy

このプロシージャを setup.sql スクリプトで使用する場合、 SECRET および EXTERNAL ACCESS INTEGRATION オブジェクトの名前が、コネクタのネイティブ SDK で推奨されている方法とは異なる方法で格納されている場合は、これらの値を何らかの方法で取得する必要があります。この場合、 EXECUTE IMMEDIATE メカニズムを使用できます.

EXECUTE IMMEDIATE $$
    DECLARE
        eai_idf VARCHAR;
        secret_idf VARCHAR;
    BEGIN
        -- retrieve name of an EXTERNAL ACCESS INTEGRATION object
        :eai_idf = <eai_object_name>;

        -- retrieve name of a SECRET object
        :secret_idf = <secret_object_name>;

        CALL PUBLIC.SETUP_EXTERNAL_INTEGRATION(
            :eai_idf,
            :secret_idf,
            ARRAY_CONSTRUCT('PUBLIC.TEST_CONNECTION()',
            'PUBLIC.FINALIZE_CONFIGURATION(VARIANT)',
            'PUBLIC.TEMPLATE_WORKER(NUMBER, STRING)')
        );
    END;
$$
;
Copy