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.

  1. 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).
  2. 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 no CLOUD_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 do SUBSCRIPTION_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.

  3. 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.

  4. 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, execute SYNC_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 usando AZURE_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álogo AZURE_DEMO_CATALOG.

    A função AZURE_TESTFUNC no catálogo é uma referência à respectiva função do Azure cuja assinatura é referenciada pelo parâmetro FUNCTION_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.

  5. 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álogo AZURE_DEMO_CATALOG.

  6. 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álogo AZURE_DEMO_CATALOG.

    Consulte DROP_FUNCTION Procedimento para obter mais informações.

  7. 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.