Etapas para Chamar o Azure Functions como Funções SQL
Mostra as etapas para chamar funções remotas do Azure como funções SQL em 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 do 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 você 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 Controlador de Serviços do Azure com o Autonomous Database. Você deve conceder a atribuição Colaborador de 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
noCLOUD_PARAMS
é o 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 Procedimento para obter mais informações. Você pode consultar as views 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 as 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 Procedimento para obter mais informações.
- Execute
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
para criar funções SQL wrapper. Você pode usar um dos seguintes métodos para criar as funções SQL wrapper 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 wrapper 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 wrapper PL/SQL para adicionar novas funções ao catálogo e remover wrappers 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, executeSYNC_FUNCTIONS
para atualizar os wrappers PL/SQL correspondentes no catálogo.Execute a seguinte consulta 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 Procedimento para obter mais informações.
- Você pode criar manualmente uma Função
SQL
em seu catálogo que chame sua respectiva função do Azure usandoAZURE_DEMO_CATALOG
.
Exemplo para criar 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 juntamente com seus argumentos executa a função do Azure correspondente e fornece a saída retornada pela função.Você pode consultar as views 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 Procedimento para obter mais informações.
Consulte Acionador HTTP do Azure Functions para obter mais informações.
-
- Depois que a função for criada, 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 Procedimento 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 Procedimento para obter mais informações.
Tópico principal: Chamar Funções Definidas pelo Usuário