Pasos para llamar a las funciones de ejecución de Google Cloud 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 a sus respectivas funciones en la nube y las llamen. Antes de crear este catálogo, se supone que ha creado las funciones en la nube necesarias a las que puede hacer 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: - Crear 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 a sus respectivas funciones en la nube y las llaman 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 delproject_id
proporcionado.Consulte CREATE_CATALOG Procedure 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.
- Mostrar las funciones de un catálogo.
A continuación, se muestra el ejemplo para enumerar 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 LIST_FUNCTIONS Procedure para obtener más información.
- Ejecute
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
para crear funciones SQL de envoltorio. Puede utilizar uno de los siguientes métodos para crear las funciones SQL de encapsulador 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 de encapsulador es el método más rápido y sencillo, que sincroniza automáticamente (crea o suprime) las funciones de 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 las 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 SYNC_FUNCTIONS Procedure para obtener más información.
- Puede crear manualmente una función
SQL
en el catálogo que llame a su función en la nube respectiva 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 de ejecución de Google Cloud correspondiente a la que hace referencia el parámetroFUNCTION_ID
al ID de proyecto. 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 Procedure para obtener más información.
-
- Después de crear la función, puede
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 Procedure 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 Procedure para obtener más información.
Tema principal: Llamada a funciones definidas por el usuario