Referência de configuração de integração externa¶
Os seguintes objetos de banco de dados são criados por meio do arquivo setup_external_integration.sql
.
PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_NAMES()¶
O procedimento altera outros procedimentos ou funções, cujas assinaturas são passadas como argumento do procedimento em uma matriz, com um EXTERNAL ACCESS INTEGRATION
e um nome de objeto SECRET
que são armazenados na configuração da conexão sob as seguintes chaves:
external_access_configuration
para um identificador de objetoEXTERNAL ACCESS INTEGRATION
.
secret
para um identificador de objetoSECRET
.
O segredo é anexado ao procedimento/função alterado com a chave credentials
. Por padrão, o procedimento não está disponível para nenhuma das funções de usuário do aplicativo.
Assinatura do procedimento¶
CREATE OR REPLACE PROCEDURE PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_NAMES(methods ARRAY) RETURNS VARIANT LANGUAGE SQL [...]
Onde:
methods ARRAY
representam uma matriz de assinaturas de procedimentos/funções como varchar, por exemplo,ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()')
.
Valores retornados¶
O procedimento sempre retorna uma variante com uma estrutura de resposta de conector padrão.
No caso de uma execução bem-sucedida do procedimento:
{ "response_code": "OK", "message": "Successfully set up <number> method(s)." }Nota
A execução do procedimento é concluída com êxito mesmo quando as assinaturas de procedimento/função passadas como argumentos não representam objetos existentes ou quando um aplicativo não tem acesso a esses objetos. O processo de alteração desse tipo de procedimento/função é ignorado e o processo geral continua.
Em caso de falha:
{ "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>" }Atenção
O procedimento não gera nenhum erro se ocorrer um erro durante a execução. Cada erro é incluído na resposta do conector e mapeado para o
response_code
apropriado, o que permite validar o resultado do procedimento e usá-lo com segurança nosetup.sql
durante a instalação do aplicativo (caso contrário, qualquer erro não tratado poderia interromper e encerrar o processo de instalação do aplicativo).
Possíveis erros¶
EAI_UNAVAILABLE
- um objetoEXTERNAL ACCESS INTEGRATION
não existe ou um aplicativo não tem o privilégioUSAGE
nele.SECRET_UNAVAILABLE
- um objetoSECRET
não existe ou um aplicativo não tem pelo menos um privilégioREAD
nele.INTERNAL ERROR
- esse código de resposta é retornado em caso de ocorrências de erros inesperados.
Exemplo de uso¶
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()¶
O procedimento altera outros procedimentos ou funções, cujas assinaturas são passadas como argumento do procedimento em uma matriz, com objetos EXTERNAL ACCESS INTEGRATION
e SECRET
que são atribuídos às referências do aplicativo. Ao usar esse procedimento, é necessário ter referências registradas com os seguintes nomes:
EAI_REFERENCE
- para uma referência a um objetoEXTERNAL ACCESS INTEGRATION
.SECRET_REFERENCE
- para uma referência a um objetoSECRET
.
O segredo é anexado ao procedimento/função alterado com a chave credentials
. Por padrão, o procedimento não está disponível para nenhuma das funções de usuário do aplicativo.
Assinatura do procedimento¶
CREATE OR REPLACE PROCEDURE PUBLIC.SETUP_EXTERNAL_INTEGRATION_WITH_REFERENCES(methods ARRAY) RETURNS VARIANT LANGUAGE SQL [...]
Onde:
methods ARRAY
representam uma matriz de assinaturas de procedimentos/funções como varchar, por exemplo,ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()')
.
Valores retornados¶
O procedimento sempre retorna uma variante com uma estrutura de resposta de conector padrão.
No caso de uma execução bem-sucedida do procedimento:
{ "response_code": "OK", "message": "Successfully set up <number> method(s)." }Nota
A execução do procedimento é concluída com êxito mesmo quando as assinaturas de procedimento/função passadas como argumentos não representam objetos existentes ou quando um aplicativo não tem acesso a esses objetos. O processo de alteração desse tipo de procedimento/função é ignorado e o processo geral continua.
Em caso de falha:
{ "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>" }Atenção
O procedimento não gera nenhum erro se ocorrer um erro durante a execução. Cada erro é incluído na resposta do conector e mapeado para o
response_code
apropriado, o que permite validar o resultado do procedimento e usá-lo com segurança nosetup.sql
durante a instalação do aplicativo (caso contrário, qualquer erro não tratado poderia interromper e encerrar o processo de instalação do aplicativo).
Possíveis erros¶
EAI_UNAVAILABLE
- um objetoEXTERNAL ACCESS INTEGRATION
não existe ou um aplicativo não tem o privilégioUSAGE
nele.SECRET_UNAVAILABLE
- um objetoSECRET
não existe ou um aplicativo não tem pelo menos um privilégioREAD
nele.INTERNAL ERROR
- esse código de resposta é retornado em caso de ocorrências de erros inesperados.
Exemplo de uso¶
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()¶
Essa é uma versão bruta dos procedimentos descritos acima, que também é usada por eles. O procedimento altera outros procedimentos ou funções, cujas assinaturas são passadas como argumento do procedimento em uma matriz, com nomes do objeto EXTERNAL ACCESS INTEGRATION
e SECRET
que também são passados como argumentos do procedimento. Esse procedimento dá ao desenvolvedor a liberdade de decidir como fornecer informações sobre objetos relacionados ao acesso externo ao procedimento.
O segredo é anexado ao procedimento/função alterado com a chave credentials
. Por padrão, o procedimento não está disponível para nenhuma das funções de usuário do aplicativo.
O uso desse procedimento é recomendado somente quando não há possibilidade de usar os procedimentos descritos acima, que usam referências com nomes predefinidos ou nomes de objetos armazenados em chaves predefinidas na configuração da conexão.
Assinatura do procedimento¶
CREATE OR REPLACE PROCEDURE PUBLIC.SETUP_EXTERNAL_INTEGRATION(eai_idf VARCHAR, secret_idf VARCHAR, methods ARRAY) RETURNS VARIANT LANGUAGE SQL [...]
Onde:
eai_idf VARCHAR
- representa um identificador de um objetoEXTERNAL_ACCESS_INTEGRATION
. Se você quiser passar um nome de referência, precisará envolvê-lo da seguinte forma:'reference(\'<reference_name>\')'
secret_idf VARCHAR
- representa um identificador de um objetoSECRET
. Se você quiser passar um nome de referência, precisará envolvê-lo da seguinte forma:'reference(\'<reference_name>\')'
methods ARRAY
representam uma matriz de assinaturas de procedimentos/funções como varchar, por exemplo,ARRAY_CONSTRUCT('PUBLIC.PROC_1(VARIANT)', 'PUBLIC.PROC_2()')
.
Valores retornados¶
O procedimento sempre retorna uma variante com uma estrutura de resposta de conector padrão.
No caso de uma execução bem-sucedida do procedimento:
{ "response_code": "OK", "message": "Successfully set up <number> method(s)." }Nota
A execução do procedimento é concluída com êxito mesmo quando as assinaturas de procedimento/função passadas como argumentos não representam objetos existentes ou quando um aplicativo não tem acesso a esses objetos. O processo de alteração desse tipo de procedimento/função é ignorado e o processo geral continua.
Em caso de falha:
{ "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>" }Atenção
O procedimento não gera nenhum erro se ocorrer um erro durante a execução. Cada erro é incluído na resposta do conector e mapeado para o
response_code
apropriado, o que permite validar o resultado do procedimento e usá-lo com segurança nosetup.sql
durante a instalação do aplicativo (caso contrário, qualquer erro não tratado poderia interromper e encerrar o processo de instalação do aplicativo).
Possíveis erros¶
EAI_UNAVAILABLE
- um objetoEXTERNAL ACCESS INTEGRATION
não existe ou um aplicativo não tem o privilégioUSAGE
nele.SECRET_UNAVAILABLE
- um objetoSECRET
não existe ou um aplicativo não tem pelo menos um privilégioREAD
nele.INTERNAL ERROR
- esse código de resposta é retornado em caso de ocorrências de erros inesperados.
Exemplo de uso¶
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)') );
Quando você quiser usar esse procedimento no script setup.sql
e os nomes dos objetos SECRET
e EXTERNAL ACCESS INTEGRATION
forem armazenados de forma diferente da recomendada pelo Native SDK for Connectors, será necessário recuperar esses valores de alguma forma. Nesse caso, você pode usar o mecanismo 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; $$ ;