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 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.
BEGIN
DBMS_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_ID
deCLOUD_PARAMS
es el subscription_id de la aplicación de función de Azure.Esto crea el catálogo
AZURE_DEMO_CATALOG
y cataloga todas las funciones delSUBSCRIPTION_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.
- 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; BEGIN
DBMS_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_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:
SYNC_FUNCTIONS
es 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:
BEGIN
DBMS_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_FUNCTIONS
para 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
SQL
en 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
.BEGIN
DBMS_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_TESTFUNC
en el catálogoAZURE_DEMO_CATALOG
.La función
AZURE_TESTFUNC
del catálogo es una referencia a la función de Azure correspondiente a la que hace referencia el parámetroFUNCTION_ID
a 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
DESCRIBE
y llamarla.DESC AZURE_TESTFUNC
SELECT AZURE_TESTFUNC(NULL) FROM dual;
Esto llama a la función
AZURE_TESTFUNC
llamando a la referencia de función/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_example
en 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_TESTFUNC
del 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:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Esto borra
AZURE_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