Passi per richiamare le funzioni di Azure come funzioni SQL
Mostra i passi per richiamare le funzioni remote di Azure come funzioni SQL nel database utilizzando il trigger HTTP.
Per richiamare la funzione di Azure come funzioni SQL, creare un catalogo di funzioni wrapper SQL che fanno riferimento e richiamano la rispettiva funzione cloud tramite gli endpoint API. Prima di creare questo catalogo, si presume che siano state create le funzioni Azure necessarie a cui fare riferimento da questo catalogo.
- Per accedere alle funzioni di Azure è necessario utilizzare Azure Service Principal con Autonomous Database. È necessario concedere il ruolo Collaboratore sito Web al principal del servizio Azure per l'app della funzione Azure mediante il controllo dell'accesso (IAM).Per ulteriori informazioni, vedere gli argomenti riportati di seguito.
- Crea catalogo.
Un catalogo è una raccolta di funzioni wrapper che fanno riferimento e richiamano le rispettive funzioni cloud tramite gli endpoint API.
Esempio di creazione di un catalogo per le funzioni di 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; /Il valore
SUBSCRIPTION_ID
inCLOUD_PARAMS
è il valore subscription_id dell'app della funzione Azure.Questo crea il catalogo
AZURE_DEMO_CATALOG
e cataloga tutte le funzioni delSUBSCRIPTION_ID
fornito.Per ulteriori informazioni, vedere CREATE_CATALOG Procedure. È possibile eseguire una query sulle viste DBA_CLOUD_FUNCTION_CATALOG View e USER_CLOUD_FUNCTION_CATALOG View per recuperare la lista di tutti i cataloghi del database.
- È possibile elencare le funzioni in un catalogo.
Di seguito è riportato l'esempio per elencare le funzioni di 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;Per ulteriori informazioni, vedere LIST_FUNCTIONS Procedure.
- Eseguire
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
per creare funzioni SQL wrapper. È possibile utilizzare uno dei metodi seguenti per creare le funzioni SQL wrapper nel catalogo, che richiamano le rispettive funzioni cloud:-
SYNC_FUNCTIONS:
SYNC_FUNCTIONS
è il metodo più rapido e semplice, che sincronizza automaticamente (crea o elimina) le funzioni wrapper nel catalogo con l'elenco completo delle funzioni di Azure. Ad esempio:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /In questo modo viene creato un wrapper PL/SQL per l'aggiunta di nuove funzioni al catalogo e la rimozione di wrapper per le funzioni eliminate dal catalogo.
Nota
Quando una funzione di Azure viene aggiunta, eliminata o disabilitata nell'app della funzione di Azure, è necessario eseguireSYNC_FUNCTIONS
per aggiornare i wrapper PL/SQL corrispondenti nel catalogo.Eseguire la seguente query per verificare la sincronizzazione.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
Nota
Per eseguire questo comando, tenere presente l'utente corrente.Per ulteriori informazioni, vedere SYNC_FUNCTIONS Procedure.
- È possibile creare manualmente una funzione
SQL
nel catalogo che richiama la rispettiva funzione di Azure utilizzandoAZURE_DEMO_CATALOG
.
Esempio di creazione di una funzione nel catalogo
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 lunghezza massima del nome della funzione è limitata a 100 caratteri.In questo modo viene creata la funzione
AZURE_TESTFUNC
nel catalogoAZURE_DEMO_CATALOG
.La funzione
AZURE_TESTFUNC
nel catalogo è un riferimento alla rispettiva funzione Azure alla cui sottoscrizione fa riferimento il parametroFUNCTION_ID
. Il richiamo della funzione nel catalogo insieme ai relativi argomenti esegue la funzione Azure corrispondente e fornisce l'output restituito dalla funzione.È possibile eseguire una query sulle viste DBA_CLOUD_FUNCTION View e USER_CLOUD_FUNCTION View per recuperare la lista di tutte le funzioni del database.
Per ulteriori informazioni, vedere CREATE_FUNCTION Procedure.
Per ulteriori informazioni, vedere Azure Functions HTTP trigger.
-
- Dopo aver creato la funzione, è possibile
DESCRIBE
e richiamarla.DESC AZURE_TESTFUNC
SELECT AZURE_TESTFUNC(NULL) FROM dual;
Viene richiamata la funzione
AZURE_TESTFUNC
richiamando il riferimento funzione/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_example
nel catalogoAZURE_DEMO_CATALOG
. - È possibile eliminare una funzione esistente utilizzando la procedura
DROP_FUNCTION
. Ad esempio:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AZURE_DEMO_CATALOG', FUNCTION_NAME => 'AZURE_TESTFUNC');
Questa operazione elimina la funzione
AZURE_TESTFUNC
dal catalogoAZURE_DEMO_CATALOG
.Per ulteriori informazioni, vedere DROP_FUNCTION Procedure.
- È possibile eliminare un catalogo esistente utilizzando la procedura
DROP_CATALOG
. Ad esempio:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /In questo modo
AZURE_DEMO_CATALOG
viene eliminato dal database.Per ulteriori informazioni, vedere DROP_CATALOG Procedure.
Argomento padre: Richiama funzioni definite dall'utente