SnowConvert: Oracleの関数参照¶
DATEDIFF_UDF(TIMESTAMP, NUMBER)¶
定義¶
このユーザー定義関数(UDF)は、 タイムスタンプ
から、 数値
(日数)を減算するために使われます。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM NUMBER)
パラメーター¶
FIRST_PARAM
TIMESTAMP
被減数を表す タイムスタンプ
。
SECOND_PARAM
NUMBER
減数を表す日数。
戻り値¶
タイムスタンプ
と 数字
の差をタイムスタンプとして返します。
使用例¶
入力:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', 3);
出力:
2024-01-23
DATEDIFF_UDF(TIMESTAMP, DATE)¶
定義¶
このユーザー定義関数(UDF)は、 タイムスタンプ
から 日付
を減算するために使われます。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM DATE)
パラメーター¶
FIRST_PARAM
TIMESTAMP
被減数を表す タイムスタンプ
。
SECOND_PARAM
DATE
減数を表す 日付
。
戻り値¶
タイムスタンプ
と 日付
の差を整数で返します。
使用例¶
入力:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', TO_DATE('2023-01-26'));
出力:
365
DATE_TO_JULIAN_DAYS_UDF¶
定義¶
このユーザー定義関数(UDF)は、グレゴリオ暦の日付からユリウス暦の日付に変換します(4712 BC 年1月1日からの日数)。
PUBLIC.DATE_TO_JULIAN_DAYS_UDF(INPUT_DATE DATE)
パラメーター¶
INPUT_DATE
DATE
変換するグレゴリオ暦の日付。
戻り値¶
ユリウス歴の日付の日付表現を返します。
移行例¶
入力:
Select TO_CHAR(SYSDATE, 'J') as A from DUAL;
出力:
Select
PUBLIC.DATE_TO_JULIAN_DAYS_UDF(CURRENT_TIMESTAMP()) as A from DUAL;
使用例¶
入力:
SELECT PUBLIC.DATE_TO_JULIAN_DAYS_UDF(DATE '1998-12-25');
出力:
2451173
UTL_FILE.PUT_LINE_UDF¶
定義¶
このユーザー定義関数(UDF)は、Oracle UTL_FILE_PUT_LINE プロシージャの機能を再現するために使用されます。
UTL_FILE.PUT_LINE_UDF(FILE VARCHAR,BUFFER VARCHAR)
パラメーター¶
FILE
VARCHAR
新しいバッファを開いて保存するファイル。
BUFFER
VARCHAR
定義されたファイルに保存されるバッファ。
戻り値¶
結果をvarcharで返します。
使用例¶
警告
ファイルの行を確認するには、2つの方法があります。Snowflake CLI からファイルをダウンロードするか、 SELECT * FROM UTL_FILE.FOPEN_TABLES_LINES;
で情報を簡単に確認します。ただし、ファイルが閉じられていない場合に限ります。
入力:
CREATE OR REPLACE PROCEDURE PROC()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
file_data VARIANT;
BEGIN
CALL UTL_FILE.FOPEN_UDF('test2.csv','a');
SELECT
*
INTO
file_data
FROM
TABLE(RESULT_SCAN(LAST_QUERY_ID()));
CALL UTL_FILE.PUT_LINE_UDF(:file_data,'New line');
CALL UTL_FILE.FCLOSE_UDF(:file_data);
END
$$;
CALL PROC();
出力:
null
UTL_FILE.FOPEN_UDF (VARCHAR,VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、Oracle UTL_FILE_FOPEN
プロシージャの機能を再現するために使用されます。
UTL_FILE.FOPEN_UDF(FILENAME VARCHAR,OPEN_MODE VARCHAR)
パラメーター¶
FILENAME
VARCHAR
開くファイル。
OPEN_MODE
VARCHAR
ファイルが利用可能になるモードを示します。
戻り値¶
結果をvarcharで返します。
使用例¶
警告
UTL_FILE.FOPEN_UDF
は.csvファイルを開くことができます。ファイルにアクセスするには、 ステージ
を作成し、Snowflake CLI を使用してファイルをアップロードする必要があります。
入力:
CREATE OR REPLACE PROCEDURE PROC()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
file_data VARIANT;
BEGIN
CALL UTL_FILE.FOPEN_UDF('test2.csv','a');
SELECT
*
INTO
file_data
FROM
TABLE(RESULT_SCAN(LAST_QUERY_ID()));
END
$$;
CALL PROC();
出力:
null
JSON_VALUE_UDF¶
定義¶
このユーザー定義関数(UDF)は、 JSON_VALUE 関数を再現し、 JSON 変数から単一の結果を取り出します。
JSON_VALUE_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING, RETURNING_TYPE STRING, ON_ERROR_MESSAGE VARIANT, ON_EMPTY_MESSAGE VARIANT)
パラメーター¶
JSON_OBJECT
VARIANT
値を抽出する JSON 変数。
JSON_PATH
STRING
JSON_OBJECT 内のどこに値があるかを示す JSON パス。
RETURNING_TYPE
STRING
返すタイプ。
ON_ERROR_MESSAGE
VARIANT
必要に応じて追加するエラーメッセージ。
ON_EMPTY_MESSAGE
VARIANT
メッセージが空白の場合に追加するエラーメッセージ。
戻り値¶
JSON_OBJECT 内の JSON_PATH で指定された単一の値を返します。結果が単一の値でない場合は、デフォルトのエラーメッセージまたは入力パラメーターで定義されたエラーメッセージを返します。
使用例¶
入力:
SELECT
JSON_VALUE_UDF(
PARSE_JSON('{
"iceCreamOrders": [
{
"customerID": "CUST001",
"orderID": "ORD001",
"productID": "PROD001",
"quantity": 2
}
]
}'),
JSON_EXTRACT_PATH_TEXT('{
"iceCreamOrders": [
{
"customerID": "CUST001",
"orderID": "ORD001",
"productID": "PROD001",
"quantity": 2
}
]
}', 'iceCreamOrders'), 'VARIANT', TO_VARIANT('There was an error'), TO_VARIANT('Empty message'));
出力:
"Empty message"
DATEADD_UDF (FLOAT, TIMESTAMP)¶
定義¶
このユーザー定義関数(UDF)は、 浮動小数点
数と タイムスタンプ
の間に和がある場合に使用されます。
PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM TIMESTAMP)
パラメーター¶
FIRST_PARAM
FLOAT
2番目の浮動小数点パラメーターに追加されるタイムスタンプ番号。
SECOND_PARAM
DATE
最初のパラメーターのタイムスタンプに加算される浮動小数点数。
戻り値¶
タイムスタンプと指定した浮動小数点数の加算を返します。
使用例¶
入力:
SELECT DATEADD_UDF(1, current_timestamp);
出力:
2024-01-30 18:47:16.988
FETCH_BULK_COLLECTIONS_UDF (OBJECT)¶
定義¶
このユーザー定義関数(UDF)は、Oracleのコレクションの一括フェッチ機能を再現するために使用されます。この関数バージョンはカーソルのみを受け取ります。
FETCH_BULK_COLLECTIONS_UDF(CURSOR OBJECT)
パラメーター¶
CURSOR
OBJECT
一括コレクションフェッチ
のデータで処理され、満たされるカーソル。
戻り値¶
一括コレクションのフェッチロジックに関連する情報を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE MY_TABLE (test VARCHAR(100));
INSERT INTO MY_TABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
MY_TABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_COLLECTIONS_UDF(:MY_CURSOR)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
[
"TEST_A"
]
],
"ROWCOUNT": 1
}
DATEADD_UDF (DATE, FLOAT)¶
定義¶
このユーザー定義関数(UDF)は、 浮動小数点
や タイムスタンプ
のように、日付とタイプの間に和がある場合に使用されます。
PUBLIC.DATEADD_UDF(FIRST_PARAM DATE, SECOND_PARAM FLOAT)
パラメーター¶
FIRST_PARAM
DATE
第2パラメーターの数字に追加される日付。
SECOND_PARAM
FLOAT
最初の日付パラメーターに追加される浮動小数点数。
戻り値¶
日付と指定した浮動小数点数の和を返します。
移行例¶
入力:
SELECT TO_DATE('05/11/21', 'dd/mm/yy') + 3.4 from dual;
出力:
SELECT
PUBLIC.DATEADD_UDF( TO_DATE('05/11/21', 'dd/mm/yy'), 3.4) from dual;
使用例¶
入力:
SELECT DATEADD_UDF('2022-02-14',6);
出力:
2022-02-20
DATEDIFF_UDF(DATE, TIMESTAMP)¶
定義¶
このユーザー定義関数(UDF)は、 日付
から タイムスタンプ
を減算するために使われます。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM TIMESTAMP)
パラメーター¶
FIRST_PARAM
DATE
減算された日付。
SECOND_PARAM
TIMESTAMP
最初のパラメーターから減算する タイムスタンプ
。
戻り値¶
最初のパラメーターと2番目のパラメーターの間の日数を整数で返します。
使用例¶
入力:
SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), '2022-02-14 15:31:00');
出力:
711
DBMS_RANDOM.VALUE_UDF¶
定義¶
このユーザー定義関数(UDF)は、Oracle DBMS_RANDOM.VALUE 関数の機能を再現します。
DBMS_RANDOM.VALUE_UDF()
パラメーター¶
入力パラメーターはありません。
戻り値¶
乱数を含む 倍
数を返します。
使用例¶
入力:
SELECT DBMS_RANDOM.VALUE_UDF();
出力:
0.6666235896
DBMS_RANDOM.VALUE_UDF (DOUBLE, DOUBLE)¶
定義¶
このユーザー定義関数(UDF)は、Oracle DBMS_RANDOM.VALUE 関数の機能を再現します。
DBMS_RANDOM.VALUE_UDF(low DOUBLE, high DOUBLE)
パラメーター¶
低
DOUBLE
考慮すべき最初の制限。
高
DOUBLE
最初のパラメーターと協調する区切り制限。
戻り値¶
倍
数を指定された制限値の間の乱数で返します。
使用例¶
入力:
SELECT DBMS_RANDOM.VALUE_UDF(1.1, 2.2);
出力:
1.637802374
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records
の機能をカバーするために使用されます。
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, COLUMN_NAMES ARRAY)
パラメーター¶
CURSOR
OBJECT
処理中のカーソル。
COLUMN_NAMES
ARRAY
カーソルに関連付けられている列名。
戻り値¶
処理した情報を含むオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
INSERT INTO BULKCOLLECTTABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_RECORD_COLLECTIONS_UDF(:MY_CURSOR, NULL)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"RESULT": {
"TEST": [
"TEST_A"
]
},
"ROWCOUNT": 1
}
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソルと列名を受け取るバリエーションです。
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, COLUMN_NAMES ARRAY)
パラメーター¶
CURSOR
OBJECT
一括フェッチ
で処理され、データで満たされるカーソル。
COLUMN_NAMES
ARRAY
列に関連付けられている名前は初期名ではありません。
戻り値¶
一括フェッチ
からの記録を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE MY_TABLE (test VARCHAR(100));
INSERT INTO MY_TABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
MY_TABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_COLLECTION_RECORDS_UDF(:MY_CURSOR, NULL)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
{
"TEST": "TEST_A"
}
],
"ROWCOUNT": 1
}
JULIAN_TO_GREGORIAN_DATE_UDF¶
定義¶
このユーザー定義関数(UDF)は、ユリウス暦の日付を JD Edwards、 YYYYDDD (天文)、 YYYYDDD (序数)の形式に変換するために使用します。
JULIAN_TO_GREGORIAN_DATE_UDF(JULIAN_DATE CHAR(7), FORMAT_SELECTED CHAR(1))
パラメーター¶
JULIAN_DATE
CHAR
変換するユリウス暦の日付。
FORMAT_SELECTED
CHAR
ロジックに必要な形式。例: 「E」
、 「J」
、 「R」
。天文標準、または 「J」
がデフォルト形式です。
戻り値¶
ユリウス暦の日付表現のバリアントを返します。
使用例¶
入力:
SELECT JULIAN_TO_GREGORIAN_DATE_UDF('098185');
出力:
'1998-07-04' --(a.k.a Sat Jul 04 1998)
TIMESTAMP_DIFF_UDF¶
定義¶
このユーザー定義関数(UDF)は、Snowflakeのタイムスタンプ算術操作と機能の等価性に使用されます。
TIMESTAMP_DIFF_UDF(LEFT_TS TIMESTAMP, RIGHT_TS TIMESTAMP )
パラメーター¶
LEFT_TS TIMESTAMP
最小値。
RIGHT_TS TIMESTAMP
減数値。
戻り値¶
タイムスタンプの差をvarcharで返します。
使用例¶
入力:
SELECT TIMESTAMP_DIFF_UDF(TO_TIMESTAMP('2024-01-31 11:47:20.532 -0800'), TO_TIMESTAMP('2024-01-31 11:47:20.532 -0800'));
出力:
-000000000 00:00:00.00000000
REGEXP_LIKE_UDF (STRING, STRING, STRING)¶
定義¶
This user-defined function (UDF) is
REGEXP_LIKE_UDF(COL STRING, PATTERN STRING, MATCHPARAM STRING)
パラメーター¶
COL STRING
パターンで評価される文字列。
PATTERN STRING
確認するパターン。
MATCHPARAM STRING
大文字と小文字を区別するかどうかを決定するマッチパラメーター。
戻り値¶
戻り値
使用例¶
入力:
SELECT REGEXP_LIKE_UDF('san Francisco', 'San* [fF].*', 'i');
出力:
TRUE
FETCH_BULK_COLLECTIONS_UDF (OBJECT, FLOAT)¶
定義¶
このユーザー定義関数(UDF)は、Oracleのコレクションの一括フェッチ機能を再現するために使用されます。この関数のバージョンは、カーソルと行数の制限値を受け取ります。
FETCH_BULK_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT FLOAT)
パラメーター¶
CURSOR
OBJECT
一括コレクションフェッチ
のデータで処理され、満たされるカーソル。
LIMIT
FLOAT
呼び出す記録の上限。
戻り値¶
一括コレクションのフェッチロジックに関連する情報を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE MY_TABLE (test VARCHAR(100));
INSERT INTO MY_TABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
MY_TABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_COLLECTIONS_UDF(:MY_CURSOR, 1.0)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
[
"TEST_A"
]
],
"ROWCOUNT": 1
}
INIT_CURSOR_UDF¶
定義¶
このユーザー定義関数(UDF)は、同等の機能を持つカーソルオブジェクトを初期化します。
INIT_CURSOR_UDF(NAME VARCHAR, QUERY VARCHAR)
パラメーター¶
NAME
VARCHAR
カーソルの名前。
QUERY
VARCHAR
カーソルに関連付けられているクエリ。
戻り値¶
カーソル情報を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"ISOPEN": false,
"NAME": "MY_CURSOR",
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": -1
}
UPDATE_PACKAGE_VARIABLE_STATE_UDF¶
定義¶
このユーザー定義関数(UDF)は、与えられたパッケージ変数の値を更新します。これは、Snowflake SETVARIABLE()関数のラッパーです。
UPDATE_PACKAGE_VARIABLE_STATE_UDF (VARIABLE VARCHAR, NEW_VALUE VARCHAR)
パラメーター¶
VARIABLE
VARCHAR
値を設定する変数名。
NEW_VALUE
VARCHAR
格納される値。
戻り値¶
更新された変数の情報をvarcharで返します。
使用例¶
警告
変数の存在を見直してください。
入力:
CALL PUBLIC.UPDATE_PACKAGE_VARIABLE_STATE_UDF('MY_LOCAL_VARIABLE', '1');
出力:
1
OPEN_BULK_CURSOR_UDF (OBJECT)¶
定義¶
このユーザー定義関数(UDF)は、バインドなしでカーソルを記述するために使用します。
OPEN_BULK_CURSOR_UDF(CURSOR OBJECT)
パラメーター¶
CURSOR
OBJECT
オープンとして処理するカーソル。
戻り値¶
カーソルの現在の情報を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"ISOPEN": true,
"NAME": "MY_CURSOR",
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": 0
}
DATEADD_UDF (TIMESTAMP, FLOAT)¶
定義¶
このユーザー定義関数(UDF)は、 タイムスタンプ
と 浮動小数点
数の間に和がある場合に使用されます。
PUBLIC.DATEADD_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM FLOAT)
パラメーター¶
FIRST_PARAM
TIMESTAMP
2番目の浮動小数点パラメーターに追加されるタイムスタンプ番号。
SECOND_PARAM
FLOAT
最初のパラメーターのタイムスタンプに加算される浮動小数点数。
戻り値¶
タイムスタンプと指定した浮動小数点数の加算を返します。
使用例¶
入力:
SELECT DATEADD_UDF(current_timestamp, 1);
出力:
2024-01-26 13:22:49.354
DATEDIFF_UDF(TIMESTAMP, TIMESTAMP)¶
定義¶
このユーザー定義関数(UDF)は、ある タイムスタンプ
から別の タイムスタンプ
を減算します。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM TIMESTAMP)
パラメーター¶
FIRST_PARAM
TIMESTAMP
被減数を表す タイムスタンプ
。
SECOND_PARAM
TIMESTAMP
減数を表す タイムスタンプ
。
戻り値¶
最初のタイムスタンプと2番目のタイムスタンプの日数の差を整数で返します。
使用例¶
入力:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800','2023-01-26 22:00:50.708 -0800');
出力:
365
UTL_FILE.FCLOSE_UDF¶
定義¶
このユーザー定義関数(UDF)は、Oracle UTL_FILE_FCLOSE
プロシージャの機能を再現するために使用されます。
UTL_FILE.FCLOSE_UDF(FILE VARCHAR)
パラメーター¶
FILE
VARCHAR
処理して閉じるファイル。
戻り値¶
結果をvarcharで返します。
使用例¶
警告
UTL_FILE.FCLOSE_UDF
は、処理中のファイルを閉じます。結果を確認したり、ファイルを処理したりするには、Snowflake CLI コンソールを使用する必要があります。Snowflake CLI コンソールでは、ファイルのアップロードまたはダウンロードが可能です。
入力:
CREATE OR REPLACE PROCEDURE PROC()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
file_data VARIANT;
BEGIN
CALL UTL_FILE.FOPEN_UDF('test2.csv','a');
SELECT
*
INTO
file_data
FROM
TABLE(RESULT_SCAN(LAST_QUERY_ID()));
CALL UTL_FILE.PUT_LINE_UDF(:file_data,'New line');
CALL UTL_FILE.FCLOSE_UDF(:file_data);
END
$$;
CALL PROC();
出力:
null
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT)¶
定義¶
このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records
の機能をカバーするために使用されます。
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT)
パラメーター¶
CURSOR
OBJECT
処理中のカーソル。
戻り値¶
処理した情報を含むオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
INSERT INTO BULKCOLLECTTABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_RECORD_COLLECTIONS_UDF(:MY_CURSOR)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"RESULT": {
"TEST": [
"TEST_A"
]
},
"ROWCOUNT": 1
}
CAST_DATE_UDF¶
定義¶
この関数は、文字列形式のタイムスタンプを日付に変換します。指定した形式の日付を返します。
PUBLIC.CAST_DATE_UDF(DATESTR STRING)
パラメーター¶
DATESTR
STRING
形式を指定する 文字列
としての日付。形式は「YYYY-MM-DD"T"HH24:MI:SS.FF」
例: 「2024-01-25T23:25:11.120」
。
形式に関する以下の情報は、 ここ でご確認ください。
戻り値¶
新しい形式を適用した 日付
を返します。
使用例¶
入力:
SELECT PUBLIC.CAST_DATE_UDF('2024-01-25T23:25:11.120');
出力:
2024-01-25
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, FLOAT, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソル、制限、列名を受け取るバリエーションです。
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, LIMIT FLOAT, COLUMN_NAMES ARRAY)
パラメーター¶
CURSOR
OBJECT
一括フェッチ
で処理され、データで満たされるカーソル。
LIMIT
FLOAT
呼び出す記録の上限。
COLUMN_NAMES
ARRAY
列に関連付けられている名前は初期名ではありません。
戻り値¶
一括フェッチ
からの記録を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE MY_TABLE (test VARCHAR(100));
INSERT INTO MY_TABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
MY_TABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_COLLECTION_RECORDS_UDF(:MY_CURSOR, 1.0, NULL)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
{
"TEST": "TEST_A"
}
],
"ROWCOUNT": 1
}
DATEDIFF_UDF(DATE, INTEGER)¶
定義¶
このユーザー定義関数(UDF)は、日付に日数の減算を適用します。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM INTEGER)
パラメーター¶
FIRST_PARAM
DATE
減算を適用する最初の日付。
SECOND_PARAM
INTEGER
最初の日付パラメーターから減算する日数。
戻り値¶
指定された日数を減算した日付を返します。
使用例¶
入力:
SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), 365);
出力:
2023-01-26
DATE_TO_RR_FORMAT_UDF¶
定義¶
このユーザー定義関数(UDF)は、日付からOracle RR 日時形式の日付に変換します。
PUBLIC.DATE_TO_RR_FORMAT_UDF(INPUT_DATE DATE)
パラメーター¶
INPUT_DATE
DATE
変換する日付。
戻り値¶
RR 形式に調整された入力日付。
移行例¶
入力:
Select TO_DATE('17-NOV-30','DD-MON-RR') as A from DUAL;
出力:
Select
PUBLIC.DATE_TO_RR_FORMAT_UDF( TO_DATE('17-NOV-30', 'DD-MON-YY')) as A from DUAL;
使用例¶
入力:
PUBLIC.CONVERT_DATE_WITH_RR_FORMAT_UDF(TO_DATE('17-NOV-30','DD-MON-YY')) as A from DUAL;
出力:
2030-11-17
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, INTEGER)¶
定義¶
このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records
の機能をカバーするために使用されます。
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT INTEGER)
パラメーター¶
CURSOR
OBJECT
処理中のカーソル。
LIMIT
INTEGER
行数の上限。
戻り値¶
処理した情報を含むオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
INSERT INTO BULKCOLLECTTABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_RECORD_COLLECTIONS_UDF(:MY_CURSOR, 0)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": false,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": true,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"RESULT": {
"TEST": []
},
"ROWCOUNT": 0
}
DBMS_OUTPUT.PUT_LINE_UDF¶
定義¶
このユーザー定義関数(UDF)は、Oracle DBMS_OUTPUT_PUT_LINE 関数の機能を再現するために使用されます。
DBMS_OUTPUT.PUT_LINE_UDF(LOG VARCHAR)
警告
この UDF を使用すると、パフォーマンスに影響が出る可能性があることに注意してください。情報のログを開始するには、関数内の実装のコメントを外します。
パラメーター¶
LOG
VARCHAR
コマンドラインに表示する情報。
戻り値¶
ログに記録された情報を varchar
で返します。
使用例¶
入力:
SELECT DBMS_OUTPUT.PUT_LINE_UDF(to_varchar(123));
出力:
123
DATEDIFF_UDF(DATE, DATE)¶
定義¶
このユーザー定義関数(UDF)は、2つの日付の間に減算がある場合に使用します。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM DATE)
パラメーター¶
FIRST_PARAM
DATE
減算の被減数を表す日付。
SECOND_PARAM
DATE
減算の減数を表す日付。
戻り値¶
日付と日付の間の日数を整数で返します。
使用例¶
入力:
SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), TO_DATE('2023-01-26'));
出力:
365
OPEN_BULK_CURSOR_UDF (OBJECT, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、バインドでカーソルを開くために使用されます。
OPEN_BULK_CURSOR_UDF(CURSOR OBJECT, BINDINGS ARRAY)
パラメーター¶
CURSOR
OBJECT
オープンとして処理するカーソル。
BINDINGS
ARRAY
カーソルに関連するバインド。
戻り値¶
カーソルの現在の情報を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR, NULL)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"ISOPEN": true,
"NAME": "MY_CURSOR",
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": 0
}
CLOSE_BULK_CURSOR_UDF¶
定義¶
このユーザー定義関数(UDF)は、カーソルの結果セットを格納する仮テーブルを削除し、カーソルプロパティを初期状態にリセットします。
CLOSE_BULK_CURSOR_UDF(CURSOR OBJECT)
パラメーター¶
CURSOR
OBJECT
確認して閉じるカーソル。
戻り値¶
カーソルプロパティをリセットしたオブジェクトを返します。
移行例¶
入力:
-- [procedure initial logic]
CLOSE C1;
-- [procedure ending logic]
出力:
C1 := (
CALL CLOSE_BULK_CURSOR_UDF(:C1)
);
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL CLOSE_BULK_CURSOR_UDF(:MY_CURSOR)
);
RETURN MY_CURSOR;
END;
$$;
出力:
{
"FOUND": null,
"ISOPEN": false,
"NAME": "MY_CURSOR",
"NOTFOUND": null,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": -1
}
DATEADD_UDF (FLOAT, DATE)¶
定義¶
このユーザー定義関数(UDF)は、 浮動小数点
または タイムスタンプ
と 日付
のようなタイプ間の和がある場合に使用されます。
PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM DATE)
パラメーター¶
FIRST_PARAM
FLOAT
2番目の日付パラメーターに追加される浮動小数点数。
SECOND_PARAM
DATE
最初のパラメーターの数字に追加される日付。
戻り値¶
浮動小数点数と指定した日付の和を返します。
使用例¶
入力:
SELECT DATEADD_UDF(6, '2022-02-14');
出力:
2022-02-20
BFILENAME_UDF¶
定義¶
この関数は、ディレクトリ名とファイル名のパラメーターを 文字列
として受け取ります。そして、 「\」
を使って連結を返します。
警告
文字 「\」
は、オペレーティングシステムのファイル連結文字と一致するように変更する必要があります。
PUBLIC.BFILENAME_UDF (DIRECTORYNAME STRING, FILENAME STRING);
パラメーター¶
DIRECTORYNAME
STRING
文字列
として処理されるディレクトリ名。
FILENAME
STRING
連結されるファイル名。
戻り値¶
ディレクトリ名とファイル名を 「\」
で連結した 文字列
を返します。
移行例¶
入力:
SELECT BFILENAME ('directory', 'filename.jpg') FROM DUAL;
出力:
SELECT
PUBLIC.BFILENAME_UDF('directory', 'filename.jpg') FROM DUAL;
使用例¶
入力:
SELECT PUBLIC.BFILENAME_UDF('directory', 'filename.jpg');
出力:
directory\filename.jpg
REGEXP_LIKE_UDF (STRING, STRING)¶
定義¶
このユーザー定義関数(UDF)は、Oracle REGEXP_LIKE
の機能をサポートするために使用されます。
REGEXP_LIKE_UDF(COL STRING, PATTERN STRING)
パラメーター¶
COL STRING
パターンで評価される文字列。
PATTERN STRING
確認するパターン。
戻り値¶
ブール式を返します。パターンが文字列に一致する場合はtrue、一致しない場合はfalse。
使用例¶
入力:
SELECT REGEXP_LIKE_UDF('San Francisco', 'San* [fF].*');
出力:
TRUE
UTL_FILE.FOPEN_UDF (VARCHAR, VARCHAR, VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、Oracle UTL_FILE_FOPEN
プロシージャの機能を再現するために使用されます。
UTL_FILE.FOPEN_UDF(PACKAGE_VARIABLE VARCHAR, FILENAME VARCHAR, OPEN_MODE VARCHAR)
パラメーター¶
PACKAGE_VARIABLE
VARCHAR
ファイルオープンに関連する変数。
FILENAME
VARCHAR
開くファイル。
OPEN_MODE
VARCHAR
ファイルが利用可能になるモードを示します。
戻り値¶
結果をvarcharで返します。
使用例¶
警告
UTL_FILE.FOPEN_UDF
は.csvファイルを開くことができます。ファイルにアクセスするには、 ステージ
を作成し、Snowflake CLI を使用してファイルをアップロードする必要があります。
入力:
CREATE OR REPLACE PROCEDURE PROC()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
file_data VARIANT;
BEGIN
CALL UTL_FILE.FOPEN_UDF(NULL, 'test2.csv','a');
SELECT
*
INTO
file_data
FROM
TABLE(RESULT_SCAN(LAST_QUERY_ID()));
CALL UTL_FILE.PUT_LINE_UDF(:file_data,'New line');
CALL UTL_FILE.FCLOSE_UDF(:file_data);
END
$$;
CALL PROC();
出力:
null
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT)¶
定義¶
このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソルのみを受け取るバリエーションです。
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT)
パラメーター¶
CURSOR
OBJECT
一括フェッチ
で処理され、データで満たされるカーソル。
戻り値¶
一括フェッチ
からの記録を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE MY_TABLE (test VARCHAR(100));
INSERT INTO MY_TABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
MY_TABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_COLLECTION_RECORDS_UDF(:MY_CURSOR)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
{
"TEST": "TEST_A"
}
],
"ROWCOUNT": 1
}
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, FLOAT, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records
の機能をカバーするために使用されます。
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT FLOAT, COLUMN_NAMES ARRAY)
パラメーター¶
CURSOR
OBJECT
処理中のカーソル。
LIMIT
FLOAT
行数の上限。
COLUMN_NAMES
ARRAY
カーソルに関連付けられている列名。
戻り値¶
処理した情報を含むオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE BULKCOLLECTTABLE(test VARCHAR(100));
INSERT INTO BULKCOLLECTTABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
BULKCOLLECTTABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_RECORD_COLLECTIONS_UDF(:MY_CURSOR, 1.0, NULL)
);
RETURN MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"RESULT": {
"TEST": [
"TEST_A"
]
},
"ROWCOUNT": 1
}
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, INTEGER)¶
定義¶
このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソルとリミットを受け取るバリエーションです。
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, LIMIT INTEGER)
パラメーター¶
CURSOR
OBJECT
一括フェッチ
で処理され、データで満たされるカーソル。
LIMIT
FLOAT
呼び出す記録の上限。
戻り値¶
一括フェッチ
からの記録を持つオブジェクトを返します。
使用例¶
入力:
CREATE OR REPLACE TABLE MY_TABLE (test VARCHAR(100));
INSERT INTO MY_TABLE VALUES ('TEST_A');
CREATE OR REPLACE PROCEDURE MY_PROCEDURE ()
RETURNS OBJECT
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
MY_CURSOR OBJECT := INIT_CURSOR_UDF('MY_CURSOR', ' SELECT * FROM
MY_TABLE');
BEGIN
MY_CURSOR := (
CALL OPEN_BULK_CURSOR_UDF(:MY_CURSOR)
);
MY_CURSOR := (
CALL FETCH_BULK_COLLECTION_RECORDS_UDF(:MY_CURSOR, 0)
);
Return MY_CURSOR;
END;
$$;
CALL MY_PROCEDURE();
出力:
{
"FOUND": false,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": true,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [],
"ROWCOUNT": 0
}