SnowConvert AI - Oracle - 組み込みパッケージ¶
組み込みパッケージの変換リファレンス。
説明¶
Oracleは、データベースの機能を拡張し、SQL 機能への PL/SQL アクセスを提供するために、PL/SQL パッケージをOracleサーバーとともに多数提供しています。(Oracle PL/SQL 組み込みパッケージ)
DBMS_OUTPUT¶
説明¶
DBMS_OUTPUTパッケージは特に PL/SQL デバッグ情報を表示するのに便利です。(Oracle PL/SQL DBMS_OUTPUT)
PUT_LINE プロシージャ¶
DBMS_OUTPUT.PUT_LINE の変換リファレンス。
説明¶
このプロシージャはバッファーに行を配置します。(Oracle PL/SQL DBMSOUTPUT.PUT_LINE)
この UDF は、Oracle DBMS_OUTPUT.PUT_LINE 関数の機能を複製するために、表示するデータを挿入する仮テーブルを使用して実装されています。
構文¶
カスタムプロシージャ¶
セットアップデータ¶
DBMS_OUTPUT スキーマを作成する必要があります。
DBMS_OUTPUT.PUT_LINE(VARCHAR)¶
パラメーター¶
LOG: 表示したいバッファーの項目。
注釈
これは仮テーブルを使用していることに注意してください。セッション終了後もデータを持続させたい場合は、 CREATE TABLE から TEMPORARY を削除してください。
仮テーブル には、永続的でない一時的なデータが格納されます。それらは作成されたセッション内にのみ存在し、そのセッションの残りの期間だけ持続します。セッション終了後、テーブルに保存されたデータはシステムから完全に削除されるため、テーブルを作成したユーザーでもSnowflakeでも復旧することはできません。
警告
仮テーブルを使用しない場合、混乱を避けるために、 USER の実行 DBMS_OUTPUT.PUT_LINE UDF が挿入されるテーブルに別の列が必要な場合があることに留意してください。
使用例¶
Oracle¶
結果¶
Snowflake¶
結果¶
既知の問題¶
UDF のコードは、パフォーマンスに影響する可能性があるため、コメントアウトされたままになっています。ユーザーがこのコードを使用すると決めた場合は、コメントを解除するだけです。
ユーザーは、UDF を変更し、必要な情報を DBMS_OUTPUT.PUT_LINE テーブルに挿入することができます。
DBMS_LOB¶
説明¶
DBMS_LOBパッケージは、BLOBs、CLOBs、NCLOBs、BFILEs、仮LOBsを演算するサブプログラムを提供します。DBMS_LOBを使用して、 LOB または完全な LOBs の特定の部分にアクセスし、操作することができます。(Oracle PL/SQL DBMS_LOB)
SUBSTR 関数¶
Translation reference for DBMS_LOB.SUBSTR.
説明¶
この関数は、 LOB の先頭からの絶対
オフセットを起点として、 LOB の量バイトまたは文字を返します。(Oracle PL/SQL DBMS_LOB.SUBSTR)
この組み込み関数は、Snowflake SUBSTR 関数 に置き換えられます。しかし、いくつかの違いがあります。
注釈
amount と offset パラメーターはSnowflakeでは反転されます
構文¶
関数のオーバーロード¶
DBMS_LOB.SUBSTR('文字列'、量、オフセット)
使用例¶
Oracle¶
結果¶
Snowflake¶
結果¶
DBMS_LOB.SUBSTR(B LOB, 量, オフセット)¶
使用例¶
警告
OracleとSnowflakeの結果値は、関数を理解しやすくするためにバイトから文字列に変換されています。
Snowflake の場合は以下を使用することを検討してください。
hex_decode_string( to_varchar(SUBSTR(blob_column, 1, 6), 'HEX'));
また、 Oracle の場合は以下を使用することを検討してください。
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(blob_column, 1, 6));
結果を文字列として取得します。
Oracle¶
結果¶
Snowflake¶
結果¶
警告
注意: UTL_RAW.CAST_TO_RAW() は現在、TO_BINARY() に変換されていません。関数は、例の機能的同等性を示すために使用されます。
DBMS_LOB.SUBSTR(CLOB, 量, オフセット)¶
使用例¶
Oracle¶
結果¶
Snowflake¶
結果¶
警告
注意: UTL_RAW.CAST_TO_RAW() は現在、TO_BINARY() に変換されていません。関数は、例の機能的同等性を示すために使用されます。
DBMS_LOB.SUBSTR(BFILE, 量, オフセット)¶
使用例¶
BFILE 列で DBMS_LOB.SUBSTR()を使用すると、ファイルのコンテンツの部分文字列が返されます。
警告
次の例は現在の移行 ではなく、BFILE タイプに対する SUBSTR 関数の違いを示すための機能的な例です。
ファイルのコンテンツ(file.txt):
Oracle¶
コンソールログ¶
Snowflake¶
BFILE 列は VARCHAR 列に変換されるため、同じ列に SUBSTR 関数を適用すると、ファイルのコンテンツではなく、ファイル名の部分文字列が返されます。
結果¶
SUBSTR(bfile_column, 1, 9) |
|---|
MY_DIR\fi |
既知の問題¶
1.BFILE 列で DBMS_LOB.SUBSTR を使用する¶
列の BFILE データ型に対する現在の変換は VARCHAR で、ファイル名は文字列として格納されます。したがって、変換後の BFILE 列に SUBSTR 関数を適用すると、ファイル名の部分文字列が返されますが、Oracleではファイルのコンテンツの部分文字列が返されます。
関連 EWIs¶
SSC-EWI-OR0076: 組み込みパッケージがサポートされていません。
SSC-FDM-OR0035: DBMS_OUTPUT.PUTLINE UDF の実装を確認してください。
UTL_FILE¶
説明¶
UTL_FILEパッケージを使用すると、 PL/SQL プログラムでテキストファイルの読み書きができます。(Oracle PL/SQL UTL_FILE)
FCLOSE プロシージャ¶
UTL_FILE.FCLOSE の変換リファレンス。
説明¶
このプロシージャは、ファイルハンドルで識別されるオープンファイルを閉じます。(Oracle PL/SQL UTL_FILE.FCLOSE)
このプロシージャは書き込まれたテキストファイルを保存するためにSnowflake STAGE を使用して実装されています。
構文¶
セットアップデータ¶
UTL_FILEスキーマを作成する必要があります。
ファイルをダウンロードしたい場合は、以下のコマンドを実行してください。
警告
GET コマンドは Snowflake CLI で実行されます。
カスタムプロシージャオーバーロード¶
UTL_FILE.FCLOSE(VARCHAR)¶
パラメーター¶
FILE:
UTL_FILE.FOPENの呼び出しから返されたアクティブなファイルハンドラー
機能性¶
このプロシージャは、UTL_FILE.FOPENプロシージャで作成された FOPEN_TABLES_LINES テーブルを使用します。
このプロシージャは、 FOPEN_TABLES_LINES にあるファイルから、同じ FHANDLE を持つすべての行をutlfile_local_directoryステージに書き込みます。
注釈
なお、このプロシージャでは、前回作成した ステージ を使用します。今のところ、別のステージでファイルを書き込みたい場合は、名前を変更する必要があります。
これらのプロシージャは
COPY INTOの内部ステージに実装されています。
使用例¶
Oracle¶
警告
この例を実行するには、ORACLE UTL_FILEを参照してください
Snowflake¶
既知の問題¶
1. Modify the procedure for changing the name of the stage.¶
ステージ名を変更する必要がある場合、ユーザーはプロシージャを変更することができます。
2.場所 静的。¶
このプロシージャへの書き込みに使用される場所は静的です。プロシージャの新しいバージョンでは、 FILE パラメーターを持つ場所を使用することで、その拡張性を高めることが期待されています。
5.ファイルはサポートされています。¶
このプロシージャは今のところ、.CSV ファイルのみを書き込みます。
関連 EWIs¶
SSC-FDM-0015: データ型が認識されません。
SSC-FDM-OR0036: 不要な組み込みパッケージパラメーター。
FOPEN プロシージャ¶
UTL_FILE.FOPEN の変換リファレンス。
説明¶
このプロシージャはファイルを開きます。(Oracle PL/SQL UTL_FILE.FOPEN)
このプロシージャはテキストファイルを保存するためにSnowflake STAGE を使用して実装されています。
ユーザーは、プロシージャで使用するローカルファイルを STAGE にアップロードする必要があります。
構文¶
セットアップデータ¶
UTL_FILEスキーマを作成する必要があります。
ステージ
utlfile_local_directoryを作成します。
OPEN_MODEパラメーターの値が w または r の場合、utlfile_local_directoryにファイルをアップロードする必要があります。
警告
PUT コマンドは Snowflake CLI で実行されます。
カスタムプロシージャオーバーロード¶
UTL_FILE.FOPEN( VARCHAR, VARCHAR)¶
パラメーター¶
FILENAME: ファイル名。拡張子**.** を含む
OPEN_MODE: ファイルを開く方法を指定します。
オープンモード¶
Oracle組み込みパッケージUTL_FILE.FOPENプロシージャは、ファイルを開く方法として6つのモードをサポートしていますが、Snowscriptingプロシージャでサポートされているのはそのうちの3つだけです。
OPEN_MODE |
DESCRIPTION |
STATUS |
|---|---|---|
w |
書き込みモード |
サポート対象 |
a |
追加モード |
サポート対象 |
r |
読み取りモード |
サポート対象 |
rb |
バイト読み取りモード |
サポート対象外 |
wb |
バイト書き込みモード |
サポート対象外 |
ab |
バイト付加モード |
サポート対象外 |
機能性¶
このプロシージャでは、ファイルを開く操作をエミュレートする2つのテーブルを使用します。FOPEN_TABLES テーブルは開いているファイルを格納し、 FOPEN_TABLES_LINES テーブルは各ファイルが所有する行を格納します。
ファイルが書き込みモードでオープンされた場合、新しいファイルが作成され、読み込みモードまたは追加モードでオープンされた場合、 FOPEN_TABLES_LINES にファイルの行をロードし、 FOPEN_TABLES にファイルを挿入します。
注釈
なお、このプロシージャでは、前回作成した ステージ を使用します。今のところ、ステージに別の名前を使いたい場合は、プロシージャを変更する必要があります。
これらのプロシージャは
COPY INTOの内部ステージに実装されています。
使用例¶
Oracle¶
警告
この例を実行するには、ORACLE UTL_FILEを参照してください
Snowflake¶
既知の問題¶
1. Modify the procedure for changing the name of the stage.¶
ステージ名を変更する必要がある場合、ユーザーはプロシージャを変更することができます。
2. LOCATION parameter is not used.¶
プロシージャで使用されるステージは静的であるため、 LOCATION パラメーターは現在使用されていません。このパラメーターを使用して、開きたいファイルがあるステージの名前を入力することで、プロシージャの拡張性を高めるバージョンアップが計画されています。
3. MAX_LINESIZE parameter is not used.¶
Oracle組み込みパッケージUTL_FILE.FOPENプロシージャには MAX_LINESIZE パラメーターがありますが、Snowscriptingプロシージャでは使用されないため削除されます。
4. OPEN_MODE values supported.¶
このプロシージャは、write (w)、read (r)、append (a)モードでファイルを開くことができます。
5.ファイルはサポートされています。¶
このプロシージャは今のところ、.CSV ファイルにのみ対応しています。
関連 EWIs¶
SSC-FDM-0015: データ型が認識されません。
SSC-FDM-OR0036: UnnecessaryBuiltInPackagesParameters
PUT_LINE プロシージャ¶
UTL_FILE.PUT_LINE の変換リファレンス。
説明¶
このプロシージャは、バッファーパラメーターに格納されているテキスト文字列を、ファイルハンドルによって識別されるオープンファイルに書き込みます。(Oracle PL/SQL UTL_FILE.PUT_LINE)
構文¶
セットアップデータ¶
UTL_FILEスキーマを作成する必要があります。
カスタム UDF¶
UTL_FILE.PUT_LINE(VARCHAR, VARCHAR)¶
パラメーター¶
FILE:
UTL_FILE.FOPENの呼び出しから返されたアクティブなファイルハンドラーBUFFER: ファイル**.** に書き込むテキストを含むテキストバッファー
機能性¶
このプロシージャは、UTL_FILE.FOPENプロシージャで作成された FOPEN_TABLES_LINES テーブルを使用します。
ファイルの OPEN_MODE が_write_ (w)または_append_ (a)の場合、バッファーは FOPEN_TABLES_LINES に挿入されますが、 OPEN_MODE がread (r)の場合、 File_is_read_only 例外がスローされます。
使用例¶
Oracle¶
警告
この例を実行するには、ORACLE UTL_FILEを参照してください
Snowflake¶
既知の問題¶
1. AUTOFLUSH parameter is not used.¶
Oracle組み込みパッケージUTL_FILE.PUT_LINEプロシージャには AUTOFLUSH パラメーターがありますが、Snowscriptingプロシージャでは使用されないため削除されます。
関連 EWIs¶
SSC-FDM-0015: データ型が認識されません。
[SSC-FDM-OR0036](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/oracleFDM.md#ssc-fdm-or0036):不要な組み込みパッケージのパラメーター。
DBMS_RANDOM¶
説明¶
DBMS_RANDOMパッケージは組み込みの乱数生成器を提供します。DBMS_RANDOMは暗号用ではありません。(Oracle PL/SQL DBMS_RANDOM)
VALUE 関数¶
DBMS_RANDOM.VALUE の変換リファレンス。
説明¶
基本関数は、0以上1未満の乱数を取得します。あるいは、
Xがlow以上、high未満であるOracle乱数Xを取得することもできます。(Oracle PL/SQL DBMS_RANDOM.VALUE)
この UDF は、Oracle DBMS_RANDOM.VALUE 関数の機能を複製するため、Javascriptの Math.random 関数を使用して実装しています。
構文¶
カスタム UDF オーバーロード¶
セットアップデータ¶
DBMS_RANDOM スキーマを作成する必要があります。
DBMS_RANDOM.VALUE()¶
パラメーター¶
パラメーターはありません。
注釈
注意: UDF は、およそ9桁から10桁の小数部(9桁または10桁の精度)のみをサポートしています。
使用例¶
Oracle¶
結果¶
注釈
この関数は_DBMS_RANDOM.VALUE()_ または DBMS_RANDOM.VALUE. のいずれかで呼び出すことができます。
Snowflake¶
結果¶
注釈
Snowflakeでは、括弧を付ける必要があります。
DBMS_RANDOM.VALUE(NUMBER, NUMBER)
パラメーター¶
low: 乱数が生成される
NUMBERの最低値。生成される数値はlow以上です。high: 乱数を生成する際の制限値として使用される
NUMBERの最高値。生成される数値はhighよりも小さくなります。
注釈
Oracleの DBMS_RANDOM.VALUE(low, high)関数は、パラメーターの順序を指定する必要がないため、Snowflake UDF は、常に最高と最低の数値を取り出すことでこの機能をサポートするように実装されています。
UDF は、およそ9桁から10桁の小数部(9桁または10桁の精度)しかサポートしていません。
使用例¶
Oracle¶
結果¶
Snowflake¶
結果¶
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-FDM-OR0033: DBMS_RANDOM.VALUE 組み込みパッケージの精度はSnowflakeの方が低いです。