Pasos para llamar a funciones de Azure como funciones SQL
Muestra los pasos para llamar a funciones remotas de Azure como funciones SQL en la base de datos mediante el disparador HTTP.
Para llamar a Azure Function como funciones SQL, cree un catálogo de funciones de envoltorio SQL que hagan referencia a sus respectivas funciones en la nube y las llamen a través de sus puntos finales de API. Antes de crear este catálogo, se asume aquí que ha creado las funciones de Azure necesarias a las que debe hacer referencia este catálogo.
- Para acceder a las funciones de Azure, debe utilizar el principal de servicio de Azure con Autonomous AI Database. Debe otorgar el rol de contribuyente de sitio web al principal de servicio de Azure para la aplicación de función de Azure en su control de acceso (IAM).Puede obtener más información en los siguientes enlaces:
- Crear un catálogo.
Un catálogo es una recopilación de funciones de envoltorio que hacen referencia a sus respectivas funciones en la nube y las llaman a través de sus puntos finales de API.
Ejemplo para crear un catálogo para las funciones de Azure.
BEGINDBMS_CLOUD_FUNCTION.CREATE_CATALOG( credential_name => 'AZURE$PA', catalog_name => 'AZURE_DEMO_CATALOG', service_provider => 'AZURE', cloud_params => '{"subscription_id":"XXXXXXXXXXXXXXXXXXXXXXXX_example"}' ); END; /El valor
SUBSCRIPTION_IDdeCLOUD_PARAMSes el subscription_id de la aplicación de función de Azure.Esto crea el catálogo
AZURE_DEMO_CATALOGy cataloga todas las funciones delSUBSCRIPTION_IDproporcionado.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.
- Puede mostrar las funciones de un catálogo.
A continuación, se muestra el ejemplo para mostrar las funciones de Azure:
VAR function_list CLOB; BEGINDBMS_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 Procedure para obtener más información.
- Ejecute
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONSpara 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:
SYNC_FUNCTIONSes el método más rápido y sencillo, que sincroniza automáticamente (crea o suprime) funciones de envoltorio en el catálogo con la lista completa de funciones de Azure. Por ejemplo:
BEGINDBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS( catalog_name => 'AZURE_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.
Nota
Cuando se agrega, suprime o desactiva una función de Azure en la aplicación de función de Azure, debe ejecutarSYNC_FUNCTIONSpara actualizar los envoltorios PL/SQL correspondientes en el 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
SQLen el catálogo que llame a su función de Azure respectiva medianteAZURE_DEMO_CATALOG.
Ejemplo para crear una función en el catálogo
AZURE_DEMO_CATALOG.BEGINDBMS_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; /Nota
La longitud máxima del nombre de función está limitada a 100 caracteres.Esto crea la función
AZURE_TESTFUNCen el catálogoAZURE_DEMO_CATALOG.La función
AZURE_TESTFUNCdel catálogo es una referencia a la función de Azure correspondiente a la que hace referencia el parámetroFUNCTION_IDa la suscripción. La llamada a la función en el catálogo junto con sus argumentos ejecuta la función Azure correspondiente 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.
Consulte Disparador HTTP de Azure Functions para obtener más información.
-
- Después de crear la función, puede
DESCRIBEy llamarla.DESC AZURE_TESTFUNCSELECT AZURE_TESTFUNC(NULL) FROM dual;Esto llama a la función
AZURE_TESTFUNCllamando a la referencia de función/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_exampleen el catálogoAZURE_DEMO_CATALOG. - Puede borrar una función existente mediante el procedimiento
DROP_FUNCTION. Por ejemplo:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AZURE_DEMO_CATALOG', FUNCTION_NAME => 'AZURE_TESTFUNC');Esto borra la función
AZURE_TESTFUNCdel catálogoAZURE_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:BEGINDBMS_CLOUD_FUNCTION.DROP_CATALOG( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Esto borra
AZURE_DEMO_CATALOGde la base de datos.Consulte DROP_CATALOG Procedure para obtener más información.
Tema principal: Llamada a funciones definidas por el usuario