Pasos para llamar a la función 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 y llamen a sus respectivas funciones en la nube 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 se hará referencia en este catálogo.
- Para acceder a las funciones de Azure, debe utilizar la entidad de servicio de Azure con Autonomous Database. Debe otorgar el rol Contribuyente de sitio web a la entidad 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:
- Cree un catálogo.
Un catálogo es una recopilación de funciones de envoltorio que hacen referencia y llaman a sus respectivas funciones en la nube a través de sus puntos finales de API.
Ejemplo para crear un catálogo para 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 valor 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 el procedimiento CREATE_CATALOG para obtener más información. Puede consultar las vistas DBA_CLOUD_FUNCTION_CATALOG y USER_CLOUD_FUNCTION_CATALOG 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 un 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 el procedimiento LIST_FUNCTIONS 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 del envoltorio 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 (crea o suprime) automáticamente las funciones de envoltorio del 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 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
Mantenga una nota del usuario actual para ejecutar este comando.Consulte el procedimiento SYNC_FUNCTIONS 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 respectiva cuya suscripción hace referencia el parámetroFUNCTION_ID
. La llamada a la función en el catálogo junto con sus argumentos ejecuta la función de Azure correspondiente y proporciona la salida devuelta por la función.Puede consultar las vistas DBA_CLOUD_FUNCTION y USER_CLOUD_FUNCTION para recuperar la lista de todas las funciones de la base de datos.
Consulte el procedimiento CREATE_FUNCTION para obtener más información.
Consulte Disparador HTTP de Azure Functions para obtener más información.
-
- Una vez creada la función, puede ejecutar
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 el procedimiento DROP_FUNCTION 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 el procedimiento DROP_CATALOG para obtener más información.
Tema principal: Llamada a funciones definidas por el usuario