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 di Azure necessarie a cui questo catalogo fa riferimento.

  1. Per accedere alle funzioni di Azure, è necessario utilizzare Azure Service Principal con Autonomous Database. È necessario concedere il ruolo Collaboratore sito Web al principal servizio di Azure per l'applicazione funzione di Azure nell'ambito del relativo controllo dell'accesso (IAM).
  2. Creare un catalogo.

    Un catalogo è una raccolta di funzioni wrapper che fanno riferimento e richiamano le rispettive funzioni cloud tramite gli endpoint API.

    Esempio per creare 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 nel file CLOUD_PARAMS è subscription_id dell'applicazione della funzione Azure.

    Questo crea il catalogo AZURE_DEMO_CATALOG e cataloga tutte le funzioni del SUBSCRIPTION_ID fornito.

    Per ulteriori informazioni, vedere CREATE_CATALOG Procedura. È 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 nel database.

  3. È 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 Procedura.

  4. Eseguire DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS per creare funzioni SQL wrapper. È possibile utilizzare uno dei seguenti metodi 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 dei wrapper per le funzioni eliminate dal catalogo.

    Nota

    Quando viene aggiunta, eliminata o disabilitata una funzione di Azure nell'applicazione delle funzioni di Azure, è necessario eseguire SYNC_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, conservare una nota dell'utente corrente.

    Per ulteriori informazioni, vedere SYNC_FUNCTIONS Procedura.

    • È possibile creare manualmente nel catalogo una funzione SQL che richiama la rispettiva funzione Azure utilizzando AZURE_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 catalogo AZURE_DEMO_CATALOG.

    La funzione AZURE_TESTFUNC nel catalogo è un riferimento alla rispettiva funzione Azure a cui il parametro FUNCTION_ID fa riferimento la sottoscrizione. Richiamando la funzione nel catalogo insieme ai relativi argomenti viene eseguita la funzione Azure corrispondente e viene fornito 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 Procedura.

    Per ulteriori informazioni, vedere Attivazione HTTP delle funzioni di Azure.

  5. Dopo aver creato la funzione, è possibile DESCRIBE e richiamarla.
    DESC AZURE_TESTFUNC
    SELECT AZURE_TESTFUNC(NULL) FROM dual;

    La funzione AZURE_TESTFUNC viene richiamata richiamando il riferimento funzione /subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_example nel catalogo AZURE_DEMO_CATALOG.

  6. È 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');
    
    

    La funzione AZURE_TESTFUNC viene eliminata dal catalogo AZURE_DEMO_CATALOG.

    Per ulteriori informazioni, vedere DROP_FUNCTION Procedura.

  7. È possibile eliminare un catalogo esistente utilizzando la procedura DROP_CATALOG. Ad esempio:
    BEGIN
        DBMS_CLOUD_FUNCTION.DROP_CATALOG (
          catalog_name     => 'AZURE_DEMO_CATALOG'
      );
    END;
    /
    

    Viene eliminato AZURE_DEMO_CATALOG dal database.

    Per ulteriori informazioni, vedere DROP_CATALOG Procedura.