Etapas para Chamar Funções de Execução do Google Cloud como Funções SQL

Mostra as etapas para chamar as funções de Execução do Google Cloud como funções SQL no banco de dados.

Para chamar as funções do Google Cloud Run como funções SQL, você cria uma biblioteca de funções de encapsulador SQL que fazem referência e chamam suas respectivas funções de nuvem. Antes de criar este catálogo, presume-se aqui que você criou as funções de nuvem necessárias para serem referenciadas por este catálogo. Consulte Criar uma função Cloud Run usando o console do Google Cloud para obter mais informações.

  1. Para acessar as funções do Google Cloud Run de uma instância do Autonomous Database, use sua conta de serviço do Google. Você deve conceder a permissão cloudfunctions.functions.list e as atribuições Cloud Functions Invoker e Cloud Run Invoker à conta de serviço do Google para o aplicativo Google Cloud Platform (GCP).
  2. Crie um catálogo. Para criar um catálogo para funções de Execução do Google Cloud com um usuário diferente de ADMIN, você precisa conceder privilégios de leitura na exibição CLOUD_INTEGRATIONS a esse usuário.

    Um catálogo é uma coleção de funções wrapper que fazem referência e chamam suas respectivas funções de nuvem usando seus pontos finais de API.

    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
            credential_name  => 'GCP$PA', 
            catalog_name     => 'GCP_DEMO_CATALOG', 
            service_provider => 'GCP',
            cloud_params     => '{"project_id":"example_XXXXXX"}'
     );
    END;
    /
    

    O valor project_id no cloud_params é o ID do projeto do Google Cloud Platform (GCP).

    Isso cria o catálogo GCP_DEMO_CATALOG e cataloga todas as funções do project_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.

  3. Listar as funções em um catálogo.

    Veja a seguir o exemplo para listar as funções do Google Cloud Run:

    VAR function_list CLOB;
    
    BEGIN
        DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
            credential_name  => 'GCP$PA',
            catalog_name     => 'GCP_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.

  4. 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: O método SYNC_FUNCTIONS para criar a função SQL do encapsulador é o método mais rápido e simples, que sincroniza automaticamente (cria ou exclui) funções do encapsulador no catálogo com a lista completa de funções de nuvem definidas na região, no compartimento e na tenancy com as quais o catálogo foi criado. Por exemplo:

    
    BEGIN
        DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
            catalog_name => 'GCP_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.

    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 de nuvem usando DBMS_CLOUD.CREATE_FUNCTION.

    Exemplo de criação de uma função no catálogo GCP_DEMO_CATALOG.

    EXEC :function_args  := TO_CLOB('{"name": "VARCHAR2"}');
    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
            credential_name => 'GCP$PA',
            catalog_name    => 'GCP_DEMO_CATALOG',
            function_name   => 'gcp_testfunc',
            function_id     => 'function_id_path',
            input_args      => :function_args
     );
    END;
    /
    

    Isso cria a função GCP_TESTFUNC no catálogo GCP_DEMO_CATALOG.

    A função GCP_TESTFUNC no catálogo é uma referência à respectiva função de Execução do Google Cloud cujo id de projeto é referenciado pelo parâmetro FUNCTION_ID. Chamar a função no catálogo junto com seus argumentos executa a função correspondente do Google Cloud Run 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.

  5. Após a criação da função, você poderá DESCRIBE e chamá-la.
    DESC GCP_TESTFUNC
    COLUMN STATUS format a30
    COLUMN OUTPUT format a30
    SELECT GCP_TESTFUNC(NULL) FROM dual;

    Isso chama a função GCP_TESTFUNC chamando a referência de função especificada no parâmetro function_id.

  6. Você pode eliminar uma função existente usando o procedimento DROP_FUNCTION. Por exemplo:
    EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
    

    Isso elimina a função GCP_TESTFUNC do catálogo GCP_DEMO_CATALOG.

    Consulte DROP_FUNCTION Procedures 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     => 'GCP_DEMO_CATALOG'
     );
    END;
    /

    Isso elimina o GCP_DEMO_CATALOG do seu banco de dados.

    Consulte DROP_CATALOG Procedures para obter mais informações.