外部集成设置参考

以下数据库对象是通过文件 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_UNAVAILABLEEXTERNAL ACCESS INTEGRATION 对象不存在,或应用程序对其没有 USAGE 权限。

  • SECRET_UNAVAILABLESECRET 对象不存在,或者应用程序不满足至少对其具有 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 INTEGRATION 和一个 SECRET 对象分配到应用程序引用中。在使用此过程时,必须注册以下名称的引用:

  • 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_UNAVAILABLEEXTERNAL ACCESS INTEGRATION 对象不存在,或应用程序对其没有 USAGE 权限。

  • SECRET_UNAVAILABLESECRET 对象不存在,或者应用程序不满足至少对其具有 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()

这是上述过程的原始版本,他们也会使用。该过程更改其他过程或函数,其签名作为过程实参以数组形式传递,同时一个 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_UNAVAILABLEEXTERNAL ACCESS INTEGRATION 对象不存在,或应用程序对其没有 USAGE 权限。

  • SECRET_UNAVAILABLESECRET 对象不存在,或者应用程序不满足至少对其具有 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 脚本中使用此过程,并且 SECRETEXTERNAL ACCESS INTEGRATION 对象的名称以与 Native SDK for Connectors 推荐的方式不同的方式存储时,您需要以某种方式检索这些值。在这种情况下,您可以使用 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
语言: 中文