SnowConvert AI – Oracle – Integrierte Pakete¶
Übersetzungsreferenz für integrierte Pakete.
Beschreibung¶
Oracle liefert viele PL/SQL-Pakete mit dem Oracle Server, um die Datenbankfunktionalität zu erweitern und PL/SQL Zugriff auf SQL-Funktionen zu bieten. (Integrierte Oracle PL/SQL-Pakete)
DBMS_OUTPUT¶
Beschreibung¶
Das Paket
DBMS_OUTPUTist besonders nützlich für die Anzeige von PL/SQL-Debugging-Informationen. (Oracle PL/SQL DBMS_OUTPUT)
PUT_LINE-Prozedur¶
Übersetzungsreferenz für DBMS_OUTPUT.PUT_LINE.
Beschreibung¶
Diese Prozedur setzt eine Zeile in den Puffer. (Oracle PL/SQL DBMSOUTPUT.PUT_LINE)
Diese UDF ist mit einer temporären Tabelle implementiert, in die die anzuzeigenden Daten eingefügt werden, um die Funktionalität von Oracle DBMS_OUTPUT.PUT_LINE-Funktion zu replizieren.
Syntax¶
Benutzerdefinierte Prozedur¶
Datenkonfiguration¶
Das Schema DBMS_OUTPUT muss erstellt werden.
DBMS_OUTPUT.PUT_LINE(VARCHAR)¶
Parameter¶
LOG: Element in einem Puffer, das Sie anzeigen möchten.
Bemerkung
Beachten Sie, dass hier eine temporäre Tabelle verwendet wird. Wenn Sie möchten, dass die Daten auch nach dem Ende einer Sitzung erhalten bleiben, entfernen Sie bitte TEMPORARY aus CREATE TABLE.
Die temporären Tabellen speichern nicht dauerhafte, vorübergehende Daten. Sie existieren nur innerhalb der Sitzung, in der sie erstellt wurden, und bleiben auch nur für den Rest der Sitzung bestehen. Nach Beendigung der Sitzung werden die in der Tabelle gespeicherten Daten vollständig aus dem System entfernt und sind daher nicht wiederherstellbar, weder für den Benutzer, der die Tabelle erstellt hat, noch für Snowflake.
Warnung
Wenn Sie die temporäre Tabelle nicht verwenden, denken Sie daran, dass Sie möglicherweise eine weitere Spalte in der Tabelle benötigen, in die die DBMS_OUTPUT.PUT_LINE UDF eingefügt wird, um Verwechslungen zu vermeiden.
Verwendungsbeispiel¶
Oracle¶
Ergebnis¶
Snowflake¶
Ergebnis¶
Bekannte Probleme¶
Der Code UDF bleibt auskommentiert, da er die Leistung beeinträchtigen kann. Wenn der Benutzer ihn verwenden möchte, muss er den Code nur auskommentieren
Der Benutzer kann die UDF so ändern, dass die erforderlichen Informationen in die Tabelle DBMS_OUTPUT.PUT_LINE eingefügt werden.
DBMS_LOB¶
Beschreibung¶
Das Paket
DBMS_LOBenthält Unterprogramme, die aufBLOBs,CLOBs,NCLOBs,BFILEsund temporärLOBsarbeiten. Sie könnenDBMS_LOBverwenden, um auf bestimmte Teile eines LOB oder eines kompletten LOBs zuzugreifen und diese zu bearbeiten. (Oracle PL/SQL DBMS_LOB)
SUBSTR-Funktion¶
Translation reference for DBMS_LOB.SUBSTR.
Beschreibung¶
Diese Funktion gibt
amountBytes oder Zeichen einer LOB zurück, beginnend mit einem absolutenoffsetvom Anfang der LOB. (Oracle PL/SQL DBMS_LOB.SUBSTR)
Diese integrierte Funktion wird durch die Snowflake SUBSTR-Funktion ersetzt. Allerdings gibt es einige Unterschiede.
Bemerkung
Die Parameter amount und offset sind in Snowflake invertiert.
Syntax¶
Funktionsüberlastungen¶
DBMS_LOB.SUBSTR(‚string‘, amount, offset)
Verwendungsbeispiel¶
Oracle¶
Ergebnis¶
Snowflake¶
Ergebnis¶
DBMS_LOB.SUBSTR(B LOB, amount, offset)¶
Verwendungsbeispiel¶
Warnung
Ergebniswerte in Oracle und Snowflake werden zum besseren Verständnis der Funktion von Byte in Zeichenfolgen konvertiert.
Für Snowflake verwenden Sie bitte:
hex_decode_string( to_varchar(SUBSTR(blob_column, 1, 6), ‚HEX‘));
und für Oracle:
utl\_raw.cast_to\_varchar2(DBMS\_LOB.SUBSTR(blob_column, 1, 6));
um das Ergebnis in Form einer Zeichenfolge zu erhalten.
Oracle¶
Ergebnis¶
Snowflake¶
Ergebnis¶
Warnung
Anmerkung: UTL_RAW.CAST_TO_RAW() wird derzeit nicht in TO_BINARY() umgewandelt. Die Funktion wird verwendet, um die Funktionsäquivalenz des Beispiels zu zeigen.
DBMS_LOB.SUBSTR(CLOB, amount, offset)¶
Verwendungsbeispiel¶
Oracle¶
Ergebnis¶
Snowflake¶
Ergebnis¶
Warnung
Anmerkung: UTL_RAW.CAST_TO_RAW() wird derzeit nicht in TO_BINARY() umgewandelt. Die Funktion wird verwendet, um die Funktionsäquivalenz des Beispiels zu zeigen.
DBMS_LOB.SUBSTR(BFILE, amount, offset)¶
Verwendungsbeispiel¶
Die Verwendung von DBMS_LOB.SUBSTR() für eine BFILE-Spalte gibt eine Teilzeichenkette des Dateiinhalts zurück.
Warnung
Das nächste Beispiel ist keine aktuelle Migration, sondern ein funktionales Beispiel, um die Unterschiede der Funktion SUBSTR auf BFILE-Typen zu zeigen.
Dateiinhalt (file.txt):
Oracle¶
Konsolenprotokoll¶
Snowflake¶
BFILE-Spalten werden in VARCHAR-Spalten übersetzt, daher würde die Anwendung einer SUBSTR-Funktion auf dieselbe Spalte eine Teilzeichenfolge des Dateinamens zurückgeben, nicht den Inhalt der Datei.
Ergebnis¶
SUBSTR(bfile_column, 1, 9) |
|---|
MY_DIR\fi |
Bekannte Probleme¶
1. Using DBMS_LOB.SUBSTR with BFILE columns¶
Die aktuelle Transformation für BFILE-Datentypen in Spalten ist VARCHAR, wobei der Name der Datei als Zeichenfolge gespeichert wird. Die Anwendung der Funktion SUBSTR auf eine BFILE-Spalte nach der Transformation wird daher eine Teilzeichenfolge des Dateinamens zurückgeben, während Oracle eine Teilzeichenfolge des Dateiinhalts zurückgeben würde.
Zugehörige EWIs¶
[SSC-EWI-OR0076](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/oracleEWI. md#ssc-ewi-or0076): Integriertes Paket wird nicht unterstützt.
[SSC-FDM-OR0035](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/oracleFDM. md#ssc-fdm-or0035): DBMS_OUTPUT.PUTLINE UDF Implementierung überprüfen.
UTL_FILE¶
Beschreibung¶
Mit dem Paket
UTL_FILEkönnen PL/SQL-Programme Textdateien lesen und schreiben. ([Oracle PL/SQL UTL_FILE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-EBC42A36-EB72-4AA1-B75F-8CF4BC6E29B4))
FCLOSE-Prozedur¶
Übersetzungsreferenz für UTL_FILE.FCLOSE.
Beschreibung¶
Diese Prozedur schließt eine offene Datei, die durch ein Dateihandle identifiziert wird. (Oracle PL/SQL UTL_FILE.FCLOSE)
Diese Prozedur wird mit Snowflake STAGE implementiert, um die geschriebenen Textdateien zu speichern.
Syntax¶
Datenkonfiguration¶
Das Schema
UTL_FILEmuss erstellt werden.
Wenn Sie die Datei herunterladen möchten, führen Sie den folgenden Befehl aus.
Warnung
Der Befehl GET wird in Snowflake CLI ausgeführt.
Benutzerdefinierte Prozedurüberlastungen¶
UTL_FILE.FCLOSE(VARCHAR)¶
Parameter¶
FILE: Aktiver Dateihandler, der vom Aufruf von
UTL_FILE.FOPENzurückgegeben wurde
Funktionalität¶
Diese Prozedur verwendet die Tabelle FOPEN_TABLES_LINES, die mit der Prozedur UTL_FILE.FOPEN erstellt wurde.
Diese Prozedur schreibt in den Stagingbereich von utlfile_local_directory alle Zeilen mit demselben FHANDLE aus der Datei in FOPEN_TABLES_LINES.
Bemerkung
Beachten Sie, dass diese Prozedur den Stagingbereich verwendet, der zuvor erstellt wurde. Wenn Sie die Datei in einem anderen Stagingbereich schreiben möchten, müssen Sie den Namen zunächst ändern.
Diese Prozeduren werden für die internen Stagingbereiche in
COPY INTOimplementiert
Verwendungsbeispiel¶
Oracle¶
Warnung
Um dieses Beispiel auszuführen, siehe [ORACLE UTL_FILE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-FA16A38B-26AA-4002-9BE0-7D3950557F8C)
Snowflake¶
Bekannte Probleme¶
1. Modify the procedure for changing the name of the stage.¶
Der Benutzer kann die Prozedur ändern, wenn der Name des Stagingbereichs geändert werden muss.
2. Location static.¶
Der Speicherort, an dem diese Prozedur geschrieben wird, ist statisch. Es wird erwartet, dass eine neue Version der Prozedur ihre Erweiterbarkeit erhöht, indem sie den Speicherort verwendet, der den Parameter FILE hat.
5. Files supported.¶
Diese Prozedur schreibt vorerst nur .CSV-Dateien.
Zugehörige EWIs¶
[SSC-FDM-0015](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0015): Datentyp wird nicht erkannt.
[SSC-FDM-OR0036](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/oracleFDM. md#ssc-fdm-or0036): Unnötige Parameter für integrierte Pakete.
FOPEN-Prozedur¶
Übersetzungsreferenz für UTL_FILE.FOPEN.
Beschreibung¶
Diese Prozedur öffnet eine Datei. ([Oracle PL/SQL UTL_FILE.FOPEN](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-DF14ADC3-983D-4E0F-BE2C-60733FF58539))
Diese Prozedur wird mit Snowflake STAGE implementiert, um die Textdateien zu speichern.
Der Benutzer ist für das Hochladen der lokalen Dateien in den STAGE, der von der Prozedur verwendet werden sollen, verantwortlich.
Syntax¶
Datenkonfiguration¶
Das Schema
UTL_FILEmuss erstellt werden.
Erstellen Sie den Stagingbereich
utlfile_local_directory.
Wenn der Wert im Parameter
OPEN_MODEw oder r lautet, müssen Sie die Datei in das Verzeichnisutlfile_local_directoryhochladen.
Warnung
Der Befehl PUT wird in Snowflake CLI ausgeführt.
Benutzerdefinierte Prozedurüberlastungen¶
UTL_FILE.FOPEN(VARCHAR, VARCHAR)¶
Parameter¶
FILENAME: Der Name der Datei, einschließlich der Erweiterung**.**
OPEN_MODE: Legt fest, wie die Datei geöffnet wird.
Offene Modi¶
Die Prozedur Oracle Integriertes Paket [UTL_FILE.FOPEN](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-DF14ADC3-983D-4E0F-BE2C-60733FF58539) unterstützt sechs Modi für das Öffnen der Datei, aber nur drei davon werden in der Snowscripting-Prozedur unterstützt.
OPEN_MODE |
DESCRIPTION |
STATUS |
|---|---|---|
w |
Schreibmodus |
Unterstützt |
a |
Anfügemodus |
Unterstützt |
r |
Lesemodus |
Unterstützt |
rb |
Modus zum Lesen von Byte |
Nicht unterstützt |
wb |
Modus zum Schreiben von Byte |
Nicht unterstützt |
ab |
Modus zum Anfügen von Byte |
Nicht unterstützt |
Funktionalität¶
Diese Prozedur verwendet zwei Tabellen, mit denen die Operation des Öffnens einer Datei emuliert wird. In der Tabelle FOPEN_TABLES werden die geöffneten Dateien gespeichert und in der Tabelle FOPEN_TABLES_LINES die Zeilen, die zu jeder Datei gehören.
Wenn die Datei im Schreibmodus geöffnet wird, wird eine neue Datei erstellt, wenn sie im Lese- oder Anfügemodus geöffnet wird, lädt sie die Zeilen der Datei in FOPEN_TABLES_LINES und fügt die Datei in FOPEN_TABLES ein.
Bemerkung
Beachten Sie, dass diese Prozedur den Stagingbereich verwendet, der zuvor erstellt wurde. Wenn Sie jetzt einen anderen Namen für den Stagingbereich verwenden möchten, müssen Sie die Prozedur ändern.
Diese Prozeduren werden für die internen Stagingbereiche in
COPY INTOimplementiert
Verwendungsbeispiel¶
Oracle¶
Warnung
Um dieses Beispiel auszuführen, siehe [ORACLE UTL_FILE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-FA16A38B-26AA-4002-9BE0-7D3950557F8C)
Snowflake¶
Bekannte Probleme¶
1. Modify the procedure for changing the name of the stage.¶
Der Benutzer kann die Prozedur ändern, wenn der Name des Stagingbereichs geändert werden muss.
2. LOCATION parameter is not used.¶
Der Parameter LOCATION wird jetzt nicht mehr verwendet, da der Stagingbereich, der in der Prozedur verwendet wird, statisch ist. Es ist für eine aktualisierte Version der Prozedur geplant, seine Erweiterbarkeit zu erhöhen, indem Sie mit diesem Parameter den Namen des Stagingbereichs eingeben, in dem sich die zu öffnende Datei befindet.
3. MAX_LINESIZE parameter is not used.¶
Die Prozedur Oracle Integriertes Paket [UTL_FILE.FOPEN](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-DF14ADC3-983D-4E0F-BE2C-60733FF58539) hat den Parameter MAX_LINESIZE, aber in der Snowscripting-Prozedur wird er entfernt, weil er nicht verwendet wird.
4. OPEN_MODE values supported.¶
Diese Prozedur unterstützt die Modi write (w), read (r) und append (a) zum Öffnen von Dateien.
5. Files supported.¶
Diese Prozedur unterstützt vorerst nur .CSV-Dateien.
Zugehörige EWIs¶
[SSC-FDM-0015](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0015): Datentyp wird nicht erkannt.
[SSC-FDM-OR0036](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/oracleFDM. md#ssc-fdm-or0036): UnnecessaryBuiltInPackagesParameters
PUT_LINE-Prozedur¶
Übersetzungsreferenz für UTL_FILE.PUT_LINE.
Beschreibung¶
Diese Prozedur schreibt die im Puffer-Parameter gespeicherten Text-Zeichenfolge in die geöffnete Datei, die durch den Datei-Handle identifiziert wird. (Oracle PL/SQL UTL_FILE.PUT_LINE)
Syntax¶
Datenkonfiguration¶
Das Schema
UTL_FILEmuss erstellt werden.
Benutzerdefinierte UDF¶
UTL_FILE.PUT_LINE(VARCHAR, VARCHAR)¶
Parameter¶
FILE: Aktiver Dateihandler, der vom Aufruf von
UTL_FILE.FOPENzurückgegeben wurdeBUFFER: Textpuffer, der den Text enthält, der in die Datei**.**geschrieben werden soll
Funktionalität¶
Diese Prozedur verwendet die Tabelle FOPEN_TABLES_LINES, die mit der Prozedur UTL_FILE.FOPEN erstellt wurde.
Wenn OPEN_MODE der Datei write (w) oder append (a) ist, wird der Puffer in FOPEN_TABLES_LINES eingefügt, aber wenn OPEN_MODE read ist (r), wird die Ausnahme File_is_read_only ausgelöst.
Verwendungsbeispiel¶
Oracle¶
Warnung
Um dieses Beispiel auszuführen, siehe [ORACLE UTL_FILE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-FA16A38B-26AA-4002-9BE0-7D3950557F8C)
Snowflake¶
Bekannte Probleme¶
1. AUTOFLUSH parameter is not used.¶
Die Prozedur Oracle Integriertes Paket [UTL_FILE.PUT_LINE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/UTL_FILE. html#GUID-BC046363-6F14-4128-B4D2-836DDBDB9B48) hat den Parameter AUTOFLUSH, aber in der Snowscripting-Prozedur wird er entfernt, weil er nicht verwendet wird.
Zugehörige EWIs¶
[SSC-FDM-0015](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0015): Datentyp wird nicht erkannt.
SSC-FDM-OR0036: Unnötige integrierte Paketparameter.
DBMS_RANDOM¶
Beschreibung¶
Das Paket
DBMS_RANDOMbietet einen integrierten Zufallszahlengenerator.DBMS_RANDOMist nicht für die Kryptographie gedacht. ([Oracle PL/SQL DBMS_RANDOM](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_RANDOM. html#GUID-8DC48B0C-3707-4172-A306-C0308DD2EB0F))
VALUE-Funktionen¶
Übersetzungsreferenz für DBMS_RANDOM.VALUE.
Beschreibung¶
Die Basisfunktion liefert eine Zufallszahl, die größer oder gleich 0 und kleiner als 1 ist. Alternativ können Sie auch eine zufällige Oracle-Zahl
Xermitteln, wobeiXgrößer oder gleichlowund kleiner alshighist. ([Oracle PL/SQL DBMS_RANDOM.VALUE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_RANDOM. html#GUID-AAD9E936-D74F-440D-9E16-24F3F0DE8D31))
Diese UDF ist unter Verwendung der Javascript-Funktion Math.random implementiert, um die Funktionalität der Oracle-Funktion DBMS_RANDOM.VALUE zu replizieren.
Syntax¶
Benutzerdefinierte UDF-Überlastungen¶
Datenkonfiguration¶
Das Schema DBMS_RANDOM muss erstellt werden.
DBMS_RANDOM.VALUE()¶
Parameter¶
Keine Parameter.
Bemerkung
Anmerkung: Die UDF unterstützt nur etwa 9 bis 10 Stellen im Dezimalteil der Zahl (9 oder 10 Ziffern Genauigkeit)
Verwendungsbeispiel¶
Oracle¶
Ergebnis¶
Bemerkung
Die Funktion kann entweder mit_DBMS_RANDOM.VALUE()_ oder DBMS_RANDOM.VALUE aufgerufen werden.
Snowflake¶
Ergebnis¶
Bemerkung
In Snowflake müssen Sie die Klammern setzen.
DBMS_RANDOM.VALUE(NUMBER, NUMBER)
Parameter¶
low: Die niedrigste
NUMBER, aus der eine Zufallszahl generiert wird. Die erzeugte Zahl ist größer oder gleichlow.high: Die höchste
NUMBER, die bei der Generierung einer Zufallszahl als Grenze verwendet wird. Die erzeugte Zahl wird niedriger alshighsein.
Bemerkung
Die Funktion Oracle DBMS_RANDOM.VALUE(low, high) erfordert keine bestimmte Reihenfolge der Parameter, so dass die Snowflake UDF implementiert wurde, um dieses Feature zu unterstützen, indem immer die höchste und die niedrigste Zahl herausgenommen wird.
Die UDF unterstützt nur etwa 9 bis 10 Ziffern im Dezimalteil der Zahl (9 oder 10 Ziffern Genauigkeit).
Verwendungsbeispiel¶
Oracle¶
Ergebnis¶
Snowflake¶
Ergebnis¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
[SSC-FDM-OR0033](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/oracleFDM. md#ssc-fdm-or0033): DBMS_RANDOM.VALUE Die Genauigkeit der integrierten Pakete ist in Snowflake geringer.