外部集成设置参考¶
以下数据库对象是通过文件 setup_external_integration.sql
创建的。
PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_NAMES()¶
该过程更改其他过程或函数,其签名作为过程实参以数组形式传递,并且具有 EXTERNAL ACCESS INTEGRATION
和 SECRET
对象名称,存储在连接配置中的以下键下:
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 [...]
其中:
methods ARRAY
代表过程/函数签名的数组,作为 varchar,例如ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()')
。
返回值¶
该过程始终返回一个具有标准连接器响应结构的变体。
在成功执行过程的情况下:
{ "response_code": "OK", "message": "Successfully set up <number> method(s)." }备注
即使作为实参传递的过程/函数签名不代表现有对象,或者应用程序无法访问这些对象,过程执行仍然会成功完成。将跳过这种过程/函数的更改流程,常规过程继续进行。
在发生故障时:
{ "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>" }注意
如果在执行过程中发生错误,该过程不会引发任何错误。每个错误都被封装在连接器响应中,并映射到适当的
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)') );
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 [...]
其中:
methods ARRAY
代表过程/函数签名的数组,作为 varchar,例如ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()')
。
返回值¶
该过程始终返回一个具有标准连接器响应结构的变体。
在成功执行过程的情况下:
{ "response_code": "OK", "message": "Successfully set up <number> method(s)." }备注
即使作为实参传递的过程/函数签名不代表现有对象,或者应用程序无法访问这些对象,过程执行仍然会成功完成。将跳过这种过程/函数的更改流程,常规过程继续进行。
在发生故障时:
{ "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>" }注意
如果在执行过程中发生错误,该过程不会引发任何错误。每个错误都被封装在连接器响应中,并映射到适当的
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)') );
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 [...]
其中:
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)." }备注
即使作为实参传递的过程/函数签名不代表现有对象,或者应用程序无法访问这些对象,过程执行仍然会成功完成。将跳过这种过程/函数的更改流程,常规过程继续进行。
在发生故障时:
{ "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>" }注意
如果在执行过程中发生错误,该过程不会引发任何错误。每个错误都被封装在连接器响应中,并映射到适当的
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)') );
如果要在 setup.sql
脚本中使用此过程,并且 SECRET
和 EXTERNAL 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; $$ ;