Pasos para llamar a Google Cloud Run Functions como funciones SQL
Muestra los pasos para llamar a las funciones de Google Cloud Run como funciones SQL en la base de datos.
Para llamar a las funciones de Google Cloud Run como funciones SQL, cree una biblioteca de funciones de envoltorio SQL que hagan referencia y llamen a sus respectivas funciones en la nube. Antes de crear este catálogo, se supone que ha creado las funciones en la nube necesarias a las que hace referencia este catálogo. Consulte Creación de una función de ejecución en la nube mediante la consola de Google Cloud para obtener más información.
- Para acceder a las funciones de Google Cloud Run desde una instancia de Autonomous Database, utilice su cuenta de servicio de Google. Debe otorgar el permiso
cloudfunctions.functions.list
y los rolesCloud Functions Invoker
yCloud Run Invoker
a la cuenta de servicio de Google para la aplicación Google Cloud Platform (GCP).Puede obtener más información en los siguientes enlaces: - Cree un catálogo. Para crear un catálogo para las funciones de Google Cloud Run con un usuario que no sea
ADMIN
, debe otorgar privilegios de lectura en la vistaCLOUD_INTEGRATIONS
a ese usuario.Un catálogo es una recopilación de funciones de envoltorio que hacen referencia y llaman a sus respectivas funciones en la nube mediante sus puntos finales 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; /El valor
project_id
decloud_params
es el ID de proyecto de Google Cloud Platform (GCP).Esto crea el catálogo
GCP_DEMO_CATALOG
y cataloga todas las funciones de laproject_id
proporcionada.Consulte procedimiento CREATE_CATALOG para obtener más información. Puede consultar las vistas DBA_CLOUD_FUNCTION_CATALOG View y USER_CLOUD_FUNCTION_CATALOG View para recuperar la lista de todos los catálogos de la base de datos.
- Enumerar las funciones de un catálogo.
A continuación se muestra el ejemplo para mostrar las funciones de 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 procedimiento LIST_FUNCTIONS para obtener más información.
- Ejecute
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
para crear funciones SQL de encapsulador. Puede utilizar uno de los siguientes métodos para crear las funciones SQL de envoltorio en el catálogo, que llaman a sus respectivas funciones en la nube:-
SYNC_FUNCTIONS: el método
SYNC_FUNCTIONS
para crear la función SQL del encapsulador es el método más rápido y sencillo, que sincroniza (crea o suprime) automáticamente las funciones del encapsulador en el catálogo con la lista completa de funciones en la nube definidas en la región, el compartimento y el arrendamiento con los que se ha creado el catálogo. Por ejemplo:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /Esto crea un envoltorio PL/SQL para agregar nuevas funciones al catálogo y eliminar envoltorios para funciones que se han suprimido del catálogo.
Ejecute la siguiente consulta para verificar la sincronización.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
Nota
Tenga en cuenta el usuario actual para ejecutar este comando.Consulte procedimiento SYNC_FUNCTIONS para obtener más información.
- Puede crear manualmente una función
SQL
en el catálogo que llame a su respectiva función en la nube medianteDBMS_CLOUD.CREATE_FUNCTION
.
Ejemplo para crear una función en el 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; /Esto crea la función
GCP_TESTFUNC
en el catálogoGCP_DEMO_CATALOG
.La función
GCP_TESTFUNC
del catálogo es una referencia a la función correspondiente de Google Cloud Run cuyo ID de proyecto hace referencia el parámetroFUNCTION_ID
. La llamada a la función en el catálogo junto con sus argumentos ejecuta la función correspondiente de Google Cloud Run y proporciona la salida devuelta por la función.Puede consultar las vistas DBA_CLOUD_FUNCTION View y USER_CLOUD_FUNCTION View para recuperar la lista de todas las funciones de la base de datos.
Consulte CREATE_FUNCTION Procedimiento para obtener más información.
-
- Una vez creada la función, puede utilizar
DESCRIBE
y llamarla.DESC GCP_TESTFUNC COLUMN STATUS format a30 COLUMN OUTPUT format a30
SELECT GCP_TESTFUNC(NULL) FROM dual;
Esto llama a la función
GCP_TESTFUNC
llamando a la referencia de función especificada en el parámetrofunction_id
. - Puede borrar una función existente mediante el procedimiento
DROP_FUNCTION
. Por ejemplo:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
Esto borra la función
GCP_TESTFUNC
del catálogoGCP_DEMO_CATALOG
.Consulte DROP_FUNCTION Procedimiento para obtener más información.
- Puede borrar un catálogo existente mediante el procedimiento
DROP_CATALOG
. Por ejemplo:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /Esto borra
GCP_DEMO_CATALOG
de la base de datos.Consulte DROP_CATALOG Procedimiento para obtener más información.
Tema principal: Llamada a funciones definidas por el usuario