DBMS_CLOUD_FUNCTION-Package

Mit dem DBMS_CLOUD_FUNCTION-Package können Sie OCI- und AWS Lambda-Remotefunktionen in Ihrer Autonomous Database als SQL-Funktionen aufrufen.

Zusammenfassung der DBMS_CLOUD_FUNCTION-Unterprogramme

In dieser Tabelle werden die Unterprogramme zusammengefasst, die im Package DBMS_CLOUD_FUNCTION enthalten sind.

Unterprogramm Beschreibung

Prozedur CREATE_CATALOG

Mit diesem Verfahren wird ein Katalog erstellt.

Prozedur LIST_FUNCTIONS

Diese Prozedur listet alle Funktionen in einem Katalog auf.

Prozedur CREATE_FUNCTION

Mit dieser Prozedur werden Funktionen in einem Katalog erstellt.

Prozedur SYNC_FUNCTIONS

Mit dieser Prozedur wird ein PL/SQL-Wrapper erstellt, um dem Katalog neue Funktionen hinzuzufügen und Wrapper für Funktionen zu entfernen, die aus dem Katalog gelöscht wurden.

Prozedur DROP_FUNCTION

Diese Prozedur löscht Funktionen aus einem Katalog.

Prozedur DROP_CATALOG

Diese Prozedur löscht einen Katalog und Funktionen, die mit dem Katalog erstellt wurden.

Prozedur CREATE_CATALOG

Mit dieser Prozedur wird ein Katalog in der Datenbank erstellt. Die Prozedur DBMS_CLOUD_FUNCTION.CREATE_CATALOG erstellt einen Katalog. Ein Katalog ist eine Gruppe von Funktionen, mit denen die erforderliche Infrastruktur zur Ausführung von Unterroutinen erstellt wird. Diese Prozedur ist überladen.

Syntax

DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
    credential_name             IN VARCHAR2,
    catalog_name                IN VARCHAR2,
    service_provider            IN VARCHAR2, 
    cloud_params                IN CLOB
);

DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
    library_name                IN VARCHAR2,
    library_listener_url        IN VARCHAR2,
    library_wallet_dir_name     IN VARCHAR2,
    library_ssl_server_cert_dn  IN VARCHAR2,
    library_remote_path         IN VARCHAR2
);

Parameter

Parameter Beschreibung

credential_name

Gibt den Namen der Zugangsdaten für die Authentifizierung an.

Dieser Parameter ist obligatorisch.

service_provider

Gibt den Typ des Serviceproviders an.

Dieser Parameter kann OCI, AWS, AZURE oder GCP als Parameterwert haben.

Dieser Parameter ist obligatorisch.

catalog_name

Gibt den Katalognamen an.

Dieser Parameter ist obligatorisch.

cloud_params

Stellt Parameter für die Funktion bereit. Beispiel: Compartment-OCID, Regionen und Azure subscription_id.

Dieser Parameter ist obligatorisch.

library_name

Gibt den Namen der Bibliothek beim Erstellen einer Remote-Bibliothek an.

Dieser Parameter ist obligatorisch.

library_listener_url

Gibt die Remote-Position der Bibliothek an.

Der Parameter akzeptiert einen Zeichenfolgenwert im Format host_name:port_number.

Beispiel: EHRPMZ_DBDOMAIN.adb-us-phoenix1.com:16000

Dieser Parameter ist obligatorisch.

library_remote_path

Gibt den Remote-Bibliothekspfad an.

Sie müssen den vollständigen absoluten Pfad zur Remote-Bibliothek angeben.

Beispiel:/u01/app/oracle/product/21.0.0.0/client_1/lib/libst_shape.so

Dieser Parameter ist obligatorisch.

library_wallet_dir_name

Gibt das Verzeichnis an, in dem das selbstsignierte Wallet gespeichert ist.

Dieser Parameter ist obligatorisch.

library_ssl_server_cert_dn

Gibt den Distinguished Name (DN) des Serverzertifikats an.

Dieser Parameter ist obligatorisch.

Fehler

Fehlercode Beschreibung

ORA-20000

Dieser Fehler wird unter einer der folgenden Bedingungen ausgelöst:

  • cloud_params-Wert fehlt, oder falsche Parameterwerte werden übergeben.

  • Der Wert library_name ist beim Erstellen einer Bibliothek nicht eindeutig.

ORA-20001

Dieser Fehler wird unter einer der folgenden Bedingungen ausgelöst:

  • Die Zugangsdaten, auf die in credential_name verwiesen wird, sind nicht vorhanden.

  • Der unter library_listener_url angegebene Listener ist beim Erstellen einer Library nicht erreichbar.

ORA-20002

Dieser Fehler wird unter einer der folgenden Bedingungen ausgelöst:

  • Dieser Fehler wird ausgelöst, wenn der Katalog bereits vorhanden ist.

  • Das angegebene Verzeichnis für das Serverzertifikat ist beim Erstellen einer Library leer.

ORA-20009

Dieser Fehler wird ausgelöst, wenn der Serviceprovider nicht vorhanden ist.

Beispiele

BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
      credential_name => 'DEFAULT_CREDENTIAL',
      catalog_name    => 'OCI_DEMO_CATALOG',
      service_provider => 'OCI',
      cloud_params    => '{"region_id":"us-phoenix-1", "compartment_id":"compartment_id"}'
   );
END;
/
BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
        credential_name  => 'AZURE$PA', 
        catalog_name     => 'AZURE_DEMO_CATALOG', 
        service_provider => 'AZURE',
        cloud_params     => '{"subscription_id":"44495e6a-8ff1-4161-b387-0e14e675b878"}'
);
END;
/
BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
        credential_name  => 'GCP$PA', 
        catalog_name     => 'GCP_DEMO_CATALOG', 
        service_provider => 'GCP',
        cloud_params     => '{"project_id":"example_XXXXXX"}'
 );
END;
/
BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
        CREDENTIAL_NAME  => 'AWS_CREDENTIAL',
        CATALOG_NAME     => 'AWS_DEMO_CATALOG',
        SERVICE_PROVIDER => 'AWS',
        CLOUD_PARAMS     => '{"region_id":"us-phoenix-1"}'
 );
END;
/
BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_CATALOG (   
    library_name               => 'EXT_DEMOLIB',
    library_listener_url       => 'remote_extproc_hostname:16000',
    library_wallet_dir_name    => 'WALLET_DIR',
    library_ssl_server_cert_dn => 'CN=VM Hostname',
    library_remote_path        => '/u01/app/oracle/extproc_libs/library name'
 );
END;
/

Hinweis zur Verwendung

  • Um einen Katalog zu erstellen, müssen Sie als Benutzer ADMIN angemeldet sein oder über Berechtigungen für Folgendes verfügen:
    • DBMS_CLOUD_OCI_FNC_FUNCTIONS_INVOKE

    • DBMS_CLOUD_OCI_FNC_FUNCTIONS_INVOKE_INVOKE_FUNCTION_RESPONSE_T

    • DBMS_CLOUD

    • Leseberechtigung auf USER_CLOUD_FUNCTION

    • Leseberechtigung auf USER_CLOUD_FUNCTION_CATALOG

Prozedur LIST_FUNCTIONS

Diese Prozedur listet alle Funktionen in einem Katalog auf.

Syntax

DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
    credential_name   IN VARCHAR2,
    catalog_name      IN VARCHAR2,
    function_list     OUT VARCHAR2
);

Parameter

Parameter Beschreibung

credential_name

Gibt den Namen der Zugangsdaten für die Authentifizierung an.

Dieser Parameter ist obligatorisch.

function_list

Gibt die Liste der Funktionen im JSON-Format zurück.

Dieser Parameter ist obligatorisch.

catalog_name

Gibt den Katalognamen an.

Dieser Parameter ist obligatorisch.

Fehler

Fehlercode Beschreibung

ORA-20000

Dieser Fehler wird ausgelöst, wenn der Wert cloud_params fehlt oder falsche Parameterwerte übergeben werden.

ORA-20001

Dieser Fehler wird ausgelöst, wenn die in credential_name referenzierten Zugangsdaten nicht vorhanden sind.

ORA-20003

Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist.

Beispiel:

SET SERVEROUTPUT ON
SET LINESIZE 32767
SET LONG 1000000
SET LONGCHUNKSIZE 32767
SET TRIMSPOOL ON
SET WRAP OFF

DECLARE
  l_function_list CLOB;
  l_function_array JSON_ARRAY_T;
  l_object JSON_OBJECT_T;
BEGIN
 DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS(
                                     credential_name => 'DEFAULT_CREDENTIAL',
                                     catalog_name    => 'OCI_DEMO_CATALOG',
                                     function_list   => l_function_list);
  l_function_array := JSON_ARRAY_T.parse(l_function_list);
  FOR i IN 0 .. l_function_array.get_size - 1
  LOOP
     l_object := TREAT(l_function_array.get(i) AS json_object_t);
     dbms_output.put_line('Function ID   = ' || l_object.get_string('functionId'));
     dbms_output.put_line('Function Name = ' || l_object.get_string('functionName'));
     dbms_output.put_line('--------------------------');
  END LOOP;
END;
/

Prozedur CREATE_FUNCTION

Mit dieser Prozedur werden Funktionen in einem Katalog erstellt. Es gibt zwei überladene DBMS_CLOUD_FUNCTION.CREATE_FUNCTION-Prozeduren.

CREATE_FUNCTION-Syntax

Die Prozedur DBMS_CLOUD_FUNCTION.CREATE_FUNCTION wird nur für Cloudfunktionen unterstützt.

DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
    credential_name   IN VARCHAR2,
    catalog_name      IN VARCHAR2,
    function_name     IN VARCHAR2,
    function_id       IN VARCHAR2,
    input_args        IN CLOB      DEFAULT NULL,
    return_type       IN VARCHAR2  DEFAULT 'CLOB',
    response_handler  IN VARCHAR2  DEFAULT NULL
);

Antwort-Handler-Signatur

<USER DEFINED TYPE> response_handler_name(function_response in CLOB)RETURNS CLOB;

Der Rückgabetyp ist ein benutzerdefinierter Typ oder PL/SQL-Typ. Die function_response ist von JSON mit Feldern.

'{  
"STATUS":"<RESPONCE STATUS>",  
"RESPONSE_BODY":"<FUNCTION RESPONSE>"
}'

CREATE_FUNCTION-Parameter

CREATE_FUNCTION-Ausnahmen

Parameter Beschreibung

credential_name

Gibt den Namen der Zugangsdaten für die Authentifizierung an.

Dieser Parameter ist obligatorisch.

catalog_name

Gibt den Katalognamen an.

Dieser Parameter ist obligatorisch.

function_name

Gibt den PL/SQL-Funktionsnamen an.

Dieser Parameter ist obligatorisch.

function_id

Der Parameterwert function_id bezieht sich auf die OCI-Funktion, AWS Lambda oder Azure-Funktion.

Dieser Parameter ist obligatorisch.

input_args

Gibt das JSON-Schlüsselwertpaar an, das Eingabeargumente und deren Typen akzeptiert.

return_type

Definiert den Rückgabetyp der Funktion.

Der Rückgabetyp ist der Datentyp CLOB.

response_handler

Gibt den benutzerdefinierten Rückruf an, der die Antwort verarbeitet.

Fehlercode Beschreibung

ORA-20001

Dieser Fehler wird ausgelöst, wenn die in credential_name referenzierten Zugangsdaten nicht vorhanden sind.

ORA-20003

Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist.

ORA-20004

Dieser Fehler wird ausgelöst, wenn die angegebene Funktion bereits vorhanden ist.

ORA-20005

Dieser Fehler wird ausgelöst, wenn die Funktions-ID oder die Funktion "Amazon Resource Names" (ARN) nicht vorhanden ist.

ORA-20006

Dieser Fehler wird ausgelöst, wenn die Eingabeargumente ungültig sind.

ORA-20007

Dieser Fehler wird ausgelöst, wenn der Rückgabetyp fehlt oder ungültig ist.

ORA-20008

Dieser Fehler wird ausgelöst, wenn der Antwort-Handler fehlt oder ungültig ist.

CREATE_FUNCTION-Beispiel

DECLARE
  function_args CLOB := TO_CLOB('{"command": "VARCHAR2", "value": "VARCHAR2"}');
BEGIN
  DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
        catalog_name    => 'OCI_DEMO_CATALOG',
        credential_name => 'DEFAULT_CREDENTIAL',
        function_name   => 'fintech_fun',
        function_id     => 'ocid1.fnfunc.oc1.phx.aaaaaaaazkrbjv6ntowwxlbbp5ct4otsj4o2hdw4ayosyosv4sthmya2lyza',
        input_args      => function_args);
END;
/

CREATE_FUNCTION-Syntax

DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
  library_name         IN VARCHAR2,
  function_name        IN VARCHAR2,
  function_id          IN VARCHAR2 DEFAULT NULL,
  plsql_params         IN CLOB DEFAULT NULL,
  external_params      IN CLOB DEFAULT NULL,
  api_type             IN VARCHAR2 DEFAULT 'FUNCTION',
  with_context         IN BOOLEAN DEFAULT FALSE,
  return_type          IN VARCHAR2 DEFAULT NULL
);

CREATE_FUNCTION-Parameter

Parameter Beschreibung

library_name

Gibt den Namen der Remote-Bibliothek an.

Dieser Parameter ist obligatorisch.

function_name

Gibt den PL/SQL-Funktionsnamen an.

Dieser Parameter ist obligatorisch.

function_id

Der Parameterwert function_id verweist auf die externen Prozeduren (extproc).

Wenn der Wert für function_id nicht angegeben ist, wird der Wert in function_name verwendet.

plsql_params

Gibt das JSON-Schlüsselwertpaar an, das die Parameter für den PL/SQL-Wrapper akzeptiert.

Die Werte müssen im Format "var_name":"modetype, datatype" angegeben werden.

  • var_name: ist der Name der Variablen. Dieser Parameter ist obligatorisch.

  • modetype: Gibt den Variablenmodus an. Der variable Modus kann einer der Folgenden sein:
    • IN

    • OUT

    • IN OUT

  • datatype: Gibt den Datentyp der Variablen an. Dieser Parameter ist obligatorisch.

Der Standardwert für plsql_params ist NULL.

external_params

Gibt die Parameter an, die für die externe C-Funktion bereitgestellt werden müssen.

Wenn kein Wert für external_params angegeben ist, werden die PL/SQL-Parameter verwendet.

api_type

Gibt den API-Typ (Funktion oder Prozedur) an.

Der Standardwert für api_type ist function.

with_context

Gibt an, dass ein Kontextzeiger an die externe Prozedur übergeben wird. Dieser Kontext wird von der externen C-Bibliothek für die erneute Anmeldung bei der Datenbank verwendet.

Der Standardwert für with_context ist FALSE.

return_type

Gibt den Rückgabetyp der erstellten Funktion an.

Prozedur SYNC_FUNCTIONS

Mit dieser Prozedur wird ein PL/SQL-Wrapper erstellt, um dem Katalog neue Funktionen hinzuzufügen und Wrapper für Funktionen zu entfernen, die aus dem Katalog gelöscht wurden.

Syntax

DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
    catalog_name      IN VARCHAR2,
    refresh_rate     IN VARCHAR2 DEFAULT 'DAILY'
);

Parameter

Parameter Beschreibung

catalog_name

Gibt den Katalognamen an.

Dieser Parameter ist obligatorisch.

refresh_rate

Gibt die Aktualisierungsrate der Funktion an.

refresh_rate kann die folgenden Werte akzeptieren:
  • HOURLY

  • DAILY

  • WEEKLY

  • MONTHLY

Der Standardwert für diesen Parameter ist DAILY.

Fehler

Fehlercode Beschreibung

ORA-20003

Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist.

ORA-20004

Dieser Fehler wird ausgelöst, wenn ein ungültiger Wert für den Parameter refresh_rate übergeben wird.

Beispiel:


BEGIN
    DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
       catalog_name     => 'OCI_DEMO_CATALOG'
 );
END;
/

Prozedur DROP_FUNCTION

Die Prozedur DBMS_CLOUD_FUNCTION.DROP_FUNCTION löscht die Funktion. Diese Prozedur ist überladen.

Syntax

Die Prozedur DBMS_CLOUD_FUNCTION.DROP_FUNCTION wird nur für Cloudfunktionen unterstützt.

DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
    catalog_name      IN VARCHAR2,
    function_name     IN VARCHAR2
);

DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
    library_name     IN VARCHAR2,
    function_name    IN VARCHAR2
);

Parameter

Parameter Beschreibung

catalog_name

Gibt den Katalognamen an.

Dieser Parameter ist obligatorisch.

function_name

Gibt den Namen der Funktion an, die gelöscht werden soll.

Dieser Parameter ist obligatorisch.

library_name

Gibt den Bibliotheksnamen an.

Dieser Parameter ist obligatorisch.

Beispiele

BEGIN
    DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
       catalog_name     => 'OCI_DEMO_CATALOG',
       function_name    => 'demo_function');
END;
/
BEGIN
    DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
       library_name     => 'EXTPROC_DEMO_LIBRARY',
       function_name    => 'demo_function');
END;
/

Prozedur DROP_CATALOG

Die Prozedur DBMS_CLOUD_FUNCTION.DROP_CATALOG löscht den Katalog und die mit dem Katalog erstellten Funktionen. Diese Prozedur ist überladen.

Syntax

DBMS_CLOUD_FUNCTION.DROP_CATALOG (
    catalog_name      IN VARCHAR2
 );

DBMS_CLOUD_FUNCTION.DROP_CATALOG (
    library_name      IN VARCHAR2
 );

Parameter

Parameter Beschreibung

catalog_name

Gibt den Katalognamen an.

Dieser Parameter ist obligatorisch.

library_name

Gibt den Bibliotheksnamen an.

Dieser Parameter ist obligatorisch.

Fehler

Fehlercode Beschreibung

ORA-20003

Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist.

Beispiel:

BEGIN
    DBMS_CLOUD_FUNCTION.DROP_CATALOG (
      catalog_name     => 'OCI_DEMO_CATALOG'
  );
END;
/

Beispiel:

BEGIN
    DBMS_CLOUD_FUNCTION.DROP_CATALOG (
      library_name     => 'library_name'
  );
END;
/