DBMS_CLOUD_FUNCTION-Package
Mit dem Package DBMS_CLOUD_FUNCTION können Sie OCI- und AWS Lambda-Remotefunktionen in Ihrer autonomen KI-Datenbank als SQL-Funktionen aufrufen.
Hinweis:
Unterstützung fürDBMS_CLOUD_FUNCTION ist ab Version 19.29 in Oracle Database 19c und ab Version 23.26 in Oracle AI Database 26ai verfügbar.
Zusammenfassung der DBMS_CLOUD_FUNCTION-Unterprogramme
DBMS_CLOUD_FUNCTION enthalten sind.
Tabelle - DBMS_CLOUD_FUNCTION-Unterprogramme
| Unterprogramm | Beschreibung |
|---|---|
| Prozedur CREATE_CATALOG | Mit diesem Verfahren wird ein Katalog erstellt. |
| Prozedur CREATE_FUNCTION | Mit dieser Prozedur werden Funktionen in einem Katalog erstellt. |
| Prozedur DROP_CATALOG | Diese Prozedur löscht einen Katalog und Funktionen, die mit dem Katalog erstellt wurden. |
| Prozedur DROP_FUNCTION | Diese Prozedur löscht Funktionen aus einem Katalog. |
| Prozedur LIST_FUNCTIONS | Diese Prozedur listet alle Funktionen in einem Katalog auf. |
| Prozedur SYNC_FUNCTIONS | Mit dieser Prozedur können Sie dem Katalog neue Funktionen hinzufügen und Funktionen entfernen, die aus dem Katalog gelöscht wurden. |
Prozedur CREATE_CATALOG
Die Prozedur DBMS_CLOUD_FUNCTION.CREATE_CATALOG erstellt einen Katalog in der Datenbank. 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
);
Parameter
| Parameter | Beschreibung |
|---|---|
|
|
Gibt den Namen der Zugangsdaten für die Authentifizierung an. Dieser Parameter ist obligatorisch. |
|
|
Gibt den Typ des Serviceproviders an. Dieser Parameter kann Dieser Parameter ist obligatorisch. |
|
|
Gibt den Katalognamen an. Dieser Parameter ist obligatorisch. |
|
|
Stellt Parameter für die Funktion bereit. Beispiel: Compartment-OCID und Regionen. Dieser Parameter ist obligatorisch. |
Beispiele
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
credential_name => 'OCI_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 => 'AWS_CREDENTIAL',
catalog_name => 'AWS_DEMO_CATALOG',
service_provider => 'AWS',
cloud_params => '{"region_id":"us-phoenix-1"}'
);
END;
/Sie müssen das überladene Verfahren verwenden, um eine Bibliothek mit externen Prozeduren zu erstellen. Für diese Prozedur ist kein Berechtigungsnachweisobjekt erforderlich. Für die Parameter sind Spezifikationen der EXTPROC VM und der Shared Library erforderlich, in der die externen Prozeduren enthalten sind. Siehe Überblick über externe Prozeduren.
Syntax
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 | Beschreibungen |
|---|---|
|
|
Gibt den Namen an, der dem Katalog/der Bibliothek in der Datenbank angegeben wird. Dieser Parameter ist obligatorisch. |
|
|
Gibt den FQDN (vollqualifizierter Domainname) der EXTPROC-VM an, die die Shared Library hostet, welche die externen Prozeduren enthält, die in einer Sprache der dritten Generation wie C/C++ geschrieben wurden, und die Portnummer, unter der der der im EXTPROC-VM-Container ausgeführte SQL*Net-Listener Verbindungsanforderungen akzeptiert. Der Parameter wird als Zeichenfolge im Format
Dieser Parameter ist obligatorisch. |
|
|
Gibt den Namen des DIRECTORY in der Datenbank an, in die das selbstsignierte Wallet importiert und gespeichert wurde. |
|
|
Gibt den Distinguished Name (DN) des Serverzertifikats an, der aus dem Wallet abgerufen wird. Beispiel:
Dieser Parameter ist obligatorisch. |
|
|
Gibt den vollständigen Pfadnamen des Verzeichnisses in EXTPROC VM an, in dem die Library mit den externen Prozeduren gespeichert ist. Beispiel:
Dieser Parameter ist obligatorisch. |
Beispiele
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
library_name => 'EXTPROC_LIBRARY',
library_listener_url => 'extproc-agent-170798.subnet-name.vcn-name.oraclevcn.com:16000',
library_wallet_dir_name => 'EXTPROCWALLETDIR',
library_ssl_server_cert_dn => 'CN=extproc-agent-170798',
library_remote_path => '/u01/app/oracle/extproc_libs/helloCextproc.so'
);
END;
/Fehler
| Fehlercode | Beschreibung |
|---|---|
|
|
Dieser Fehler wird in der folgenden Bedingung ausgelöst:
|
|
|
Dieser Fehler wird in der folgenden Bedingung ausgelöst:
|
|
|
Dieser Fehler wird in der folgenden Bedingung ausgelöst:
|
|
|
Dieser Fehler wird ausgelöst, wenn der Serviceprovider nicht vorhanden ist. |
Hinweis zur Verwendung
-
Um einen Katalog zu erstellen, müssen Sie als Benutzer
ADMINangemeldet 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 CREATE_FUNCTION
Sie können eine SQL-Funktion manuell erstellen, die ihre entsprechende Cloud-Funktion in Ihrem Katalog aufruft. Während SYNC_FUNCTIONS automatisch Wrapper für alle Cloudfunktionen in einem Katalog abruft und erstellt, können Sie mit CREATE_FUNCTION Funktionen mit benutzerdefinierten Rückgabetypen und Antwort-Handlern erstellen. Die Prozedur CREATE_FUNCTION gilt nur für Cloud-Funktionen.
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
);
Die response_handler muss in folgendem Format definiert werden:
<USER DEFINED TYPE> response_handler_name(function_response in CLOB)RETURNS CLOB;Der Rückgabewert der response_handler ist <Benutzerdefinierter Typ>, und die response_json ist ein JSON-Dokument mit zwei Feldern im folgenden Format:
'{
"status":"<response status>",
"response_body":"<response from the function>"
}'
Parameter
| Parameter | Beschreibung |
|---|---|
|
|
Gibt den Namen der Zugangsdaten für die Authentifizierung an. Dieser Parameter ist obligatorisch. |
|
|
Gibt den Katalognamen an. Dieser Parameter ist obligatorisch. |
|
|
Gibt den PL/SQL-Funktionsnamen an. Dieser Parameter ist obligatorisch. |
|
|
Der Parameterwert Dieser Parameter ist obligatorisch. |
|
|
Gibt das JSON-Schlüsselwertpaar an, das Eingabeargumente und deren Typen akzeptiert. |
|
|
Definiert den Rückgabetyp der Funktion. Der Rückgabetyp ist der Datentyp |
|
|
Gibt den benutzerdefinierten Rückruf an, der die Antwort verarbeitet. |
Fehler
| Fehlercode | Beschreibung |
|---|---|
|
|
Dieser Fehler wird ausgelöst, wenn die in |
|
|
Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist. |
|
|
Dieser Fehler wird ausgelöst, wenn die angegebene Funktion bereits vorhanden ist. |
|
|
Dieser Fehler wird ausgelöst, wenn die Funktions-ID oder die Funktion "Amazon Resource Names" (ARN) nicht vorhanden ist. |
|
|
Dieser Fehler wird ausgelöst, wenn die Eingabeargumente ungültig sind. |
|
|
Dieser Fehler wird ausgelöst, wenn der Rückgabetyp fehlt oder ungültig ist. |
|
|
Dieser Fehler wird ausgelöst, wenn der Antwort-Handler fehlt oder ungültig ist. |
Beispiel
Der einfache Fall mit nur Eingabeparametern für die Funktion:
VAR function_args CLOB;
EXEC :function_args := TO_CLOB('{"command": "VARCHAR2", "value": "VARCHAR2"}');
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
credential_name => 'DEFAULT_CREDENTIAL',
catalog_name => 'OCI_DEMO_CATALOG',
function_name => 'demo_function',
function_id => 'ocid1.fnfunc.oc1.phx.aaaaaaaazkrbjv6ntowwxlbbp5ct4otsj4o2hdw4ayosyosv4sthmya2lyza',
input_args => :function_args);
);
END;
/
Beispiel mit Rückgabetyp und Antwort-Handler:
VAR input_param CLOB;
VAR l_return_type VARCHAR2(100);
VAR l_response_handler VARCHAR2(1000);
-- Define function parameters
exec :input_param := TO_CLOB('{"command": "VARCHAR2", "value": "VARCHAR2"}');
PL/SQL procedure successfully completed.
exec :l_return_type := 'fintech_rt';
PL/SQL procedure successfully completed.
exec :l_response_handler := 'fintech_response_handler';
PL/SQL procedure successfully completed.
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
credential_name => 'OCI_CRED',
catalog_name => 'OCI_DEMO_CATALOG',
function_name => 'FINTECH_FUNCTION',
function_id => 'ocid1.fnfunc.oc1.phx.aaabbbcccc_example',
input_args => :input_param,
return_type => :l_return_type,
response_handler => :l_response_handler
);
END;
/Verwenden Sie als Nächstes diesen Typ und Response Handler bei der manuellen Erstellung der SQL Wrapper-Funktion.
VAR input_param CLOB;
VAR l_return_type VARCHAR2(100);
VAR l_response_handler VARCHAR2(1000);
-- Define function parameters
exec :input_param := TO_CLOB('{"command": "VARCHAR2", "value": "VARCHAR2"}');
PL/SQL procedure successfully completed.
exec :l_return_type := 'fintech_rt';
PL/SQL procedure successfully completed.
exec :l_response_handler := 'fintech_response_handler';
PL/SQL procedure successfully completed.
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
credential_name => 'OCI_CRED',
catalog_name => 'OCI_DEMO_CATALOG',
function_name => 'FINTECH_FUNCTION',
function_id => 'ocid1.fnfunc.oc1.phx.aaabbbcccc_example',
input_args => :input_param,
return_type => :l_return_type,
response_handler => :l_response_handler
);
END;
/Sobald die Funktion erstellt wurde, können Sie die Funktion BESCHREIBEN, um ihre Rückgabedetails abzurufen.
DESC fintech_fun
COLUMN STATUS format a30
COLUMN OUTPUT format a30Anschließend können Sie die Funktion aufrufen und Werte für die Eingabeparameter angeben.
SET SERVEROUTPUT ON
DECLARE
l_comp fintech_rt;
BEGIN
l_comp := fintech_fun(command=>'tokenize',value => 'PHI_INFORMATION');
DBMS_OUTPUT.put_line ('Status of the function = '|| l_comp.status);
DBMS_OUTPUT.put_line ('Response of the function = '|| l_comp.output);
END;
/Dadurch wird die Cloudfunktion fintech_fun aufgerufen, indem die Funktionsreferenz oocid1.funfn.oci.phx.aaaaaa_example im Katalog OCI_DEMO_CATALOG aufgerufen wird.
Verwendungshinweise
Zum Aufrufen externer Prozeduren können Sie dieselbe Syntax verwenden, die für benutzerdefinierte Funktionen verwendet wird. Beispiel: Wenn Sie eine Library mit dem Namen EXTPROC_LIBRARY in der Datenbank mit der Prozedur CREATE_CATALOG für externe Prozeduren erstellt haben, können Sie eine SQL-Funktion wie in diesem Beispiel definieren und aus einer SQL-Anweisung aufrufen.
SQL> CREATE OR REPLACE FUNCTION HELLOCEXTPROC RETURN VARCHAR2 AS
LANGUAGE C
LIBRARY EXTPROC_LIBRARY
NAME "helloCextproc";
/
Function created.
SQL> SELECT HELLOCEXTPROC() FROM dual;
HELLOCEXTPROC()
----------------------------------------------------------------------------------
Hello C Extproc from FQDN: extproc-agent-170798.subnet-name.vcn-name.oraclevcn.comProzedur DROP_CATALOG
Die Prozedur DBMS_CLOUD_FUNCTION.DROP_CATALOG löscht den Katalog und die mit dem Katalog erstellten Funktionen.
Syntax
DBMS_CLOUD_FUNCTION.DROP_CATALOG (
catalog_name IN VARCHAR2
);
Parameter
| Parameter | Beschreibung |
|---|---|
|
|
Gibt den Katalognamen an. Dieser Parameter ist obligatorisch. |
Fehler
| Fehlercode | Beschreibung |
|---|---|
|
|
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;
/
Prozedur DROP_FUNCTION
Die Prozedur DBMS_CLOUD_FUNCTION.DROP_FUNCTION löscht die Funktion.
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
);
Parameter
| Parameter | Beschreibung |
|---|---|
|
|
Gibt den Katalognamen an. Dieser Parameter ist obligatorisch. |
|
|
Gibt den Namen der Funktion an, die gelöscht werden soll. Dieser Parameter ist obligatorisch. |
Fehler
| Fehlercode | Beschreibung |
|---|---|
|
|
Dieser Fehler wird ausgelöst, wenn die angegebene Funktion nicht vorhanden ist. |
Beispiele
BEGIN
DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
catalog_name => 'OCI_DEMO_CATALOG',
function_name => 'demo_function');
END;
/
Prozedur LIST_FUNCTIONS
Diese Prozedur listet alle Funktionen in einem Katalog auf.
Hinweis:
Die Prozedur LIST_FUNCTIONS gilt nur für Cloud-Funktionen.
Syntax
DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
credential_name IN VARCHAR2,
catalog_name IN VARCHAR2,
function_list OUT VARCHAR2
);
Parameter
| Parameter | Beschreibung |
|---|---|
|
|
Gibt den Namen der Zugangsdaten für die Authentifizierung an. Dieser Parameter ist obligatorisch. |
|
|
Gibt die Liste der Funktionen im JSON-Format zurück. Dieser Parameter ist obligatorisch. |
|
|
Gibt den Katalognamen an. Dieser Parameter ist obligatorisch. |
Fehler
| Fehlercode | Beschreibung |
|---|---|
|
|
Dieser Fehler wird ausgelöst, wenn falsche Parameterwerte übergeben werden. |
|
|
Dieser Fehler wird ausgelöst, wenn die in |
|
|
Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist. |
Beispiel:
VAR function_list CLOB;
BEGIN
DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
credential_name => 'DEFAULT_CREDENTIAL',
catalog_name => 'OCI_DEMO_CATALOG',
function_list => :function_list);
);
END;
/
SELECT JSON_QUERY(:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual;
Prozedur SYNC_FUNCTIONS
Mit dieser Prozedur können Sie dem Katalog neue Funktionen hinzufügen und Funktionen entfernen, die aus dem Katalog gelöscht wurden.
Hinweis:
Die Prozedur SYNC_FUNCTIONS gilt nur für Cloud-Funktionen.
Syntax
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
catalog_name IN VARCHAR2,
refresh_rate IN VARCHAR2 DEFAULT 'DAILY'
);
Parameter
| Parameter | Beschreibung |
|---|---|
|
|
Gibt den Katalognamen an. Dieser Parameter ist obligatorisch. |
|
|
Gibt die Aktualisierungsrate der Funktion an. refresh_rate kann die folgenden Werte akzeptieren:
Der Standardwert für diesen Parameter ist |
Fehler
| Fehlercode | Beschreibung |
|---|---|
|
|
Dieser Fehler wird ausgelöst, wenn der angegebene Katalog nicht vorhanden ist. |
|
|
Dieser Fehler wird ausgelöst, wenn ein ungültiger Wert für den Parameter |
Beispiel:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
catalog_name => 'OCI_DEMO_CATALOG'
);
END;
/