Etapas para Chamar Funções do Azure como Funções SQL
Mostra as etapas para chamar funções remotas do Azure como funções SQL no seu banco de dados usando o trigger HTTP.
Para chamar a Função do Azure como funções SQL, crie um catálogo de funções de encapsulador SQL que façam referência e chamem sua respectiva função de nuvem por meio de seus pontos finais de API. Antes de criar este catálogo, presume-se aqui que criou as funções necessárias do Azure a serem referenciadas por este catálogo.
- Para acessar as funções do Azure, você precisa usar o Azure Service Principal com o Autonomous Database. Você deve conceder a atribuição Colaborador do Site ao Controlador de Serviços do Azure para o aplicativo de função do Azure em seu Controle de acesso (IAM).Para obter mais informações, consulte:
- Criar um catálogo.
Um catálogo é uma coleção de funções wrapper que fazem referência e chamam suas respectivas funções de nuvem por meio de seus pontos finais de API.
Exemplo para criar um catálogo para funções do 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; /O valor
SUBSCRIPTION_ID
naCLOUD_PARAMS
é a subscription_id do aplicativo de função do Azure.Isso cria o catálogo
AZURE_DEMO_CATALOG
e cataloga todas as funções doSUBSCRIPTION_ID
fornecido.Consulte CREATE_CATALOG Procedures para obter mais informações. Você pode consultar as exibições DBA_CLOUD_FUNCTION_CATALOG View e USER_CLOUD_FUNCTION_CATALOG View para recuperar a lista de todos os catálogos do seu banco de dados.
- Você pode listar as funções em um catálogo.
Veja a seguir o exemplo para listar funções do 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;Consulte LIST_FUNCTIONS Procedures para obter mais informações.
- Execute o
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
para criar funções SQL do encapsulador. Você pode usar um dos seguintes métodos para criar as funções SQL do encapsulador no catálogo, que chamam suas respectivas funções de nuvem:-
SYNC_FUNCTIONS:
SYNC_FUNCTIONS
é o método mais rápido e simples, que sincroniza automaticamente (cria ou exclui) funções de encapsulador no catálogo com a lista completa de funções do Azure. Por exemplo:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Isso cria um encapsulador PL/SQL para adicionar novas funções ao catálogo e remover encapsuladores para funções que foram excluídas do catálogo.
Observação
Quando uma função do Azure é adicionada, excluída ou desativada no aplicativo de função do Azure, você deve executar oSYNC_FUNCTIONS
para atualizar os wrappers PL/SQL correspondentes no catálogo.Execute a consulta a seguir para verificar a sincronização.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
Observação
Anote o usuário atual para executar esse comando.Consulte SYNC_FUNCTIONS Procedures para obter mais informações.
- Você pode criar manualmente uma Função
SQL
no seu catálogo que chame sua respectiva função do Azure usandoAZURE_DEMO_CATALOG
.
Exemplo de criação de uma função no catálogo
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; /Observação
O tamanho máximo do nome da função é limitado a 100 caracteres.Isso cria a função
AZURE_TESTFUNC
no catálogoAZURE_DEMO_CATALOG
.A função
AZURE_TESTFUNC
no catálogo é uma referência à respectiva função do Azure cuja assinatura é referenciada pelo parâmetroFUNCTION_ID
. Chamar a função no catálogo junto com seus argumentos executa a função correspondente do Azure e fornece a saída retornada pela função.Você pode consultar as exibições DBA_CLOUD_FUNCTION View e USER_CLOUD_FUNCTION View para recuperar a lista de todas as funções do seu banco de dados.
Consulte CREATE_FUNCTION Procedures para obter mais informações.
Consulte Trigger HTTP do Azure Functions para obter mais informações.
-
- Após a criação da função, você poderá
DESCRIBE
e chamá-la.DESC AZURE_TESTFUNC
SELECT AZURE_TESTFUNC(NULL) FROM dual;
Isso chama a função
AZURE_TESTFUNC
chamando a referência de função/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_example
no catálogoAZURE_DEMO_CATALOG
. - Você pode eliminar uma função existente usando o procedimento
DROP_FUNCTION
. Por exemplo:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AZURE_DEMO_CATALOG', FUNCTION_NAME => 'AZURE_TESTFUNC');
Isso elimina a função
AZURE_TESTFUNC
do catálogoAZURE_DEMO_CATALOG
.Consulte DROP_FUNCTION Procedures para obter mais informações.
- Você pode eliminar um catálogo existente usando o procedimento
DROP_CATALOG
. Por exemplo:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Isso elimina o
AZURE_DEMO_CATALOG
do seu banco de dados.Consulte DROP_CATALOG Procedures para obter mais informações.
Tópico principal: Chamar Funções Definidas pelo Usuário