Etapas para Chamar o Google Cloud Run Functions como Funções SQL
Mostra as etapas para chamar funções do Google Cloud Run como funções SQL no seu banco de dados.
Para chamar funções do Google Cloud Run como funções SQL, você cria uma biblioteca de funções SQL wrapper 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 a serem referenciadas por este catálogo. Consulte Criar uma função Cloud Run usando a console do Google Cloud para obter mais informações.
- Para acessar as funções do Google Cloud Run em 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çõesCloud Functions Invoker
eCloud Run Invoker
à conta de serviço do Google para o aplicativo Google Cloud Platform (GCP).Para obter mais informações, consulte: - Criar um catálogo. Para criar um catálogo para funções do Google Cloud Run com um usuário diferente de
ADMIN
, você precisa conceder privilégios de leitura na viewCLOUD_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
emcloud_params
é o ID do projeto do Google Cloud Platform (GCP).Isso cria o catálogo
GCP_DEMO_CATALOG
e cataloga todas as funções doproject_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.
- Liste 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 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: O método
SYNC_FUNCTIONS
para criar a função SQL do wrapper é o método mais rápido e simples, que sincroniza automaticamente (cria ou exclui) funções do wrapper no catálogo com a lista completa de funções de nuvem definidas na região, compartimento e 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 wrapper PL/SQL para adicionar novas funções ao catálogo e remover wrappers 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 Procedimento para obter mais informações.
- Você pode criar manualmente uma Função
SQL
em seu catálogo que chame sua respectiva função de nuvem usandoDBMS_CLOUD.CREATE_FUNCTION
.
Exemplo para criar 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álogoGCP_DEMO_CATALOG
.A função
GCP_TESTFUNC
no catálogo é uma referência à respectiva função Google Cloud Run cujo id do projeto é referenciado pelo parâmetroFUNCTION_ID
. Chamar a função no catálogo junto com seus argumentos executa a função Google Cloud Run correspondente 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 Procedimento para obter mais informações.
-
- Depois que a função for criada, 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âmetrofunction_id
. - 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álogoGCP_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 => 'GCP_DEMO_CATALOG' ); END; /Isso elimina o
GCP_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