SnowConvert: Oracleの関数参照

DATEDIFF_UDF(TIMESTAMP, NUMBER)

定義

このユーザー定義関数(UDF)は、 タイムスタンプ から、 数値 (日数)を減算するために使われます。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM NUMBER)
Copy

パラメーター

FIRST_PARAM TIMESTAMP

被減数を表す タイムスタンプ

SECOND_PARAM NUMBER

減数を表す日数。

戻り値

タイムスタンプ数字 の差をタイムスタンプとして返します。

使用例

入力:

SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', 3);
Copy

出力:

2024-01-23
Copy

DATEDIFF_UDF(TIMESTAMP, DATE)

定義

このユーザー定義関数(UDF)は、 タイムスタンプ から 日付 を減算するために使われます。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM DATE)
Copy

パラメーター

FIRST_PARAM TIMESTAMP

被減数を表す タイムスタンプ

SECOND_PARAM DATE

減数を表す 日付

戻り値

タイムスタンプ日付 の差を整数で返します。

使用例

入力:

SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', TO_DATE('2023-01-26'));
Copy

出力:

365
Copy

DATE_TO_JULIAN_DAYS_UDF

定義

このユーザー定義関数(UDF)は、グレゴリオ暦の日付からユリウス暦の日付に変換します(4712 BC 年1月1日からの日数)。

PUBLIC.DATE_TO_JULIAN_DAYS_UDF(INPUT_DATE DATE)
Copy

パラメーター

INPUT_DATE DATE

変換するグレゴリオ暦の日付。

戻り値

ユリウス歴の日付の日付表現を返します。

移行例

入力:

Select TO_CHAR(SYSDATE, 'J') as A from DUAL;
Copy

出力:

Select
PUBLIC.DATE_TO_JULIAN_DAYS_UDF(CURRENT_TIMESTAMP()) as A from DUAL;
Copy

使用例

入力:

SELECT PUBLIC.DATE_TO_JULIAN_DAYS_UDF(DATE '1998-12-25');
Copy

出力:

2451173
Copy

UTL_FILE.PUT_LINE_UDF

定義

このユーザー定義関数(UDF)は、Oracle UTL_FILE_PUT_LINE プロシージャの機能を再現するために使用されます。

UTL_FILE.PUT_LINE_UDF(FILE VARCHAR,BUFFER VARCHAR)
Copy

パラメーター

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();
Copy

出力:

null
Copy

UTL_FILE.FOPEN_UDF (VARCHAR,VARCHAR)

定義

このユーザー定義関数(UDF)は、Oracle UTL_FILE_FOPEN プロシージャの機能を再現するために使用されます。

UTL_FILE.FOPEN_UDF(FILENAME VARCHAR,OPEN_MODE VARCHAR)
Copy

パラメーター

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();
Copy

出力:

null
Copy

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)
Copy

パラメーター

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'));
Copy

出力:

"Empty message"
Copy

DATEADD_UDF (FLOAT, TIMESTAMP)

定義

このユーザー定義関数(UDF)は、 浮動小数点 数と タイムスタンプ の間に和がある場合に使用されます。

PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM TIMESTAMP)
Copy

パラメーター

FIRST_PARAM FLOAT

2番目の浮動小数点パラメーターに追加されるタイムスタンプ番号。

SECOND_PARAM DATE

最初のパラメーターのタイムスタンプに加算される浮動小数点数。

戻り値

タイムスタンプと指定した浮動小数点数の加算を返します。

使用例

入力:

SELECT DATEADD_UDF(1, current_timestamp);
Copy

出力:

2024-01-30 18:47:16.988
Copy

FETCH_BULK_COLLECTIONS_UDF (OBJECT)

定義

このユーザー定義関数(UDF)は、Oracleのコレクションの一括フェッチ機能を再現するために使用されます。この関数バージョンはカーソルのみを受け取ります。

FETCH_BULK_COLLECTIONS_UDF(CURSOR OBJECT)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      MY_TABLE",
  "RESULT": [
    [
      "TEST_A"
    ]
  ],
  "ROWCOUNT": 1
}
Copy

DATEADD_UDF (DATE, FLOAT)

定義

このユーザー定義関数(UDF)は、 浮動小数点タイムスタンプ のように、日付とタイプの間に和がある場合に使用されます。

PUBLIC.DATEADD_UDF(FIRST_PARAM DATE, SECOND_PARAM FLOAT)
Copy

パラメーター

FIRST_PARAM DATE

第2パラメーターの数字に追加される日付。

SECOND_PARAM FLOAT

最初の日付パラメーターに追加される浮動小数点数。

戻り値

日付と指定した浮動小数点数の和を返します。

移行例

入力:

SELECT TO_DATE('05/11/21', 'dd/mm/yy') + 3.4 from dual;
Copy

出力:

SELECT
PUBLIC.DATEADD_UDF( TO_DATE('05/11/21', 'dd/mm/yy'), 3.4) from dual;
Copy

使用例

入力:

SELECT DATEADD_UDF('2022-02-14',6);
Copy

出力:

2022-02-20
Copy

DATEDIFF_UDF(DATE, TIMESTAMP)

定義

このユーザー定義関数(UDF)は、 日付 から タイムスタンプ を減算するために使われます。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM TIMESTAMP)
Copy

パラメーター

FIRST_PARAM DATE

減算された日付。

SECOND_PARAM TIMESTAMP

最初のパラメーターから減算する タイムスタンプ

戻り値

最初のパラメーターと2番目のパラメーターの間の日数を整数で返します。

使用例

入力:

SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), '2022-02-14 15:31:00');
Copy

出力:

711
Copy

DBMS_RANDOM.VALUE_UDF

定義

このユーザー定義関数(UDF)は、Oracle DBMS_RANDOM.VALUE 関数の機能を再現します。

DBMS_RANDOM.VALUE_UDF()
Copy

パラメーター

入力パラメーターはありません。

戻り値

乱数を含む 数を返します。

使用例

入力:

SELECT DBMS_RANDOM.VALUE_UDF();
Copy

出力:

0.6666235896
Copy

DBMS_RANDOM.VALUE_UDF (DOUBLE, DOUBLE)

定義

このユーザー定義関数(UDF)は、Oracle DBMS_RANDOM.VALUE 関数の機能を再現します。

DBMS_RANDOM.VALUE_UDF(low DOUBLE, high DOUBLE)
Copy

パラメーター

DOUBLE

考慮すべき最初の制限。

DOUBLE

最初のパラメーターと協調する区切り制限。

戻り値

数を指定された制限値の間の乱数で返します。

使用例

入力:

SELECT DBMS_RANDOM.VALUE_UDF(1.1, 2.2);
Copy

出力:

1.637802374
Copy

FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, ARRAY)

定義

このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records の機能をカバーするために使用されます。

FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, COLUMN_NAMES ARRAY)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "RESULT": {
    "TEST": [
      "TEST_A"
    ]
  },
  "ROWCOUNT": 1
}
Copy

FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, ARRAY)

定義

このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソルと列名を受け取るバリエーションです。

FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, COLUMN_NAMES ARRAY)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      MY_TABLE",
  "RESULT": [
    {
      "TEST": "TEST_A"
    }
  ],
  "ROWCOUNT": 1
}
Copy

JULIAN_TO_GREGORIAN_DATE_UDF

定義

このユーザー定義関数(UDF)は、ユリウス暦の日付を JD Edwards、 YYYYDDD (天文)、 YYYYDDD (序数)の形式に変換するために使用します。

JULIAN_TO_GREGORIAN_DATE_UDF(JULIAN_DATE CHAR(7), FORMAT_SELECTED CHAR(1))
Copy

パラメーター

JULIAN_DATE CHAR

変換するユリウス暦の日付。

FORMAT_SELECTED CHAR

ロジックに必要な形式。例: 「E」「J」「R」。天文標準、または 「J」 がデフォルト形式です。

戻り値

ユリウス暦の日付表現のバリアントを返します。

使用例

入力:

SELECT JULIAN_TO_GREGORIAN_DATE_UDF('098185');
Copy

出力:

'1998-07-04' --(a.k.a Sat Jul 04 1998)
Copy

TIMESTAMP_DIFF_UDF

定義

このユーザー定義関数(UDF)は、Snowflakeのタイムスタンプ算術操作と機能の等価性に使用されます。

TIMESTAMP_DIFF_UDF(LEFT_TS TIMESTAMP, RIGHT_TS TIMESTAMP )
Copy

パラメーター

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'));
Copy

出力:

-000000000  00:00:00.00000000
Copy

REGEXP_LIKE_UDF (STRING, STRING, STRING)

定義

This user-defined function (UDF) is

REGEXP_LIKE_UDF(COL STRING, PATTERN STRING, MATCHPARAM STRING)
Copy

パラメーター

COL STRING

パターンで評価される文字列。

PATTERN STRING

確認するパターン。

MATCHPARAM STRING

大文字と小文字を区別するかどうかを決定するマッチパラメーター。

戻り値

戻り値

使用例

入力:

SELECT REGEXP_LIKE_UDF('san Francisco', 'San* [fF].*', 'i');
Copy

出力:

TRUE
Copy

FETCH_BULK_COLLECTIONS_UDF (OBJECT, FLOAT)

定義

このユーザー定義関数(UDF)は、Oracleのコレクションの一括フェッチ機能を再現するために使用されます。この関数のバージョンは、カーソルと行数の制限値を受け取ります。

FETCH_BULK_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT FLOAT)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      MY_TABLE",
  "RESULT": [
    [
      "TEST_A"
    ]
  ],
  "ROWCOUNT": 1
}
Copy

INIT_CURSOR_UDF

定義

このユーザー定義関数(UDF)は、同等の機能を持つカーソルオブジェクトを初期化します。

INIT_CURSOR_UDF(NAME VARCHAR, QUERY VARCHAR)
Copy

パラメーター

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();
Copy

出力:

{
  "ISOPEN": false,
  "NAME": "MY_CURSOR",
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "ROWCOUNT": -1
}
Copy

UPDATE_PACKAGE_VARIABLE_STATE_UDF

定義

このユーザー定義関数(UDF)は、与えられたパッケージ変数の値を更新します。これは、Snowflake SETVARIABLE()関数のラッパーです。

UPDATE_PACKAGE_VARIABLE_STATE_UDF (VARIABLE VARCHAR, NEW_VALUE VARCHAR)
Copy

パラメーター

VARIABLE VARCHAR

値を設定する変数名。

NEW_VALUE VARCHAR

格納される値。

戻り値

更新された変数の情報をvarcharで返します。

使用例

警告

変数の存在を見直してください。

入力:

CALL PUBLIC.UPDATE_PACKAGE_VARIABLE_STATE_UDF('MY_LOCAL_VARIABLE', '1');
Copy

出力:

1
Copy

OPEN_BULK_CURSOR_UDF (OBJECT)

定義

このユーザー定義関数(UDF)は、バインドなしでカーソルを記述するために使用します。

OPEN_BULK_CURSOR_UDF(CURSOR OBJECT)
Copy

パラメーター

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();
Copy

出力:

{
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "ROWCOUNT": 0
}
Copy

DATEADD_UDF (TIMESTAMP, FLOAT)

定義

このユーザー定義関数(UDF)は、 タイムスタンプ浮動小数点 数の間に和がある場合に使用されます。

PUBLIC.DATEADD_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM FLOAT)
Copy

パラメーター

FIRST_PARAM TIMESTAMP

2番目の浮動小数点パラメーターに追加されるタイムスタンプ番号。

SECOND_PARAM FLOAT

最初のパラメーターのタイムスタンプに加算される浮動小数点数。

戻り値

タイムスタンプと指定した浮動小数点数の加算を返します。

使用例

入力:

SELECT DATEADD_UDF(current_timestamp, 1);
Copy

出力:

2024-01-26 13:22:49.354
Copy

DATEDIFF_UDF(TIMESTAMP, TIMESTAMP)

定義

このユーザー定義関数(UDF)は、ある タイムスタンプ から別の タイムスタンプ を減算します。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM TIMESTAMP)
Copy

パラメーター

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');
Copy

出力:

365
Copy

UTL_FILE.FCLOSE_UDF

定義

このユーザー定義関数(UDF)は、Oracle UTL_FILE_FCLOSE プロシージャの機能を再現するために使用されます。

UTL_FILE.FCLOSE_UDF(FILE VARCHAR)
Copy

パラメーター

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();
Copy

出力:

null
Copy

FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT)

定義

このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records の機能をカバーするために使用されます。

FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "RESULT": {
    "TEST": [
      "TEST_A"
    ]
  },
  "ROWCOUNT": 1
}
Copy

CAST_DATE_UDF

定義

この関数は、文字列形式のタイムスタンプを日付に変換します。指定した形式の日付を返します。

PUBLIC.CAST_DATE_UDF(DATESTR STRING)
Copy

パラメーター

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');
Copy

出力:

2024-01-25
Copy

FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, FLOAT, ARRAY)

定義

このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソル、制限、列名を受け取るバリエーションです。

FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, LIMIT FLOAT, COLUMN_NAMES ARRAY)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      MY_TABLE",
  "RESULT": [
    {
      "TEST": "TEST_A"
    }
  ],
  "ROWCOUNT": 1
}
Copy

DATEDIFF_UDF(DATE, INTEGER)

定義

このユーザー定義関数(UDF)は、日付に日数の減算を適用します。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM INTEGER)
Copy

パラメーター

FIRST_PARAM DATE

減算を適用する最初の日付。

SECOND_PARAM INTEGER

最初の日付パラメーターから減算する日数。

戻り値

指定された日数を減算した日付を返します。

使用例

入力:

SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), 365);
Copy

出力:

2023-01-26
Copy

DATE_TO_RR_FORMAT_UDF

定義

このユーザー定義関数(UDF)は、日付からOracle RR 日時形式の日付に変換します。

PUBLIC.DATE_TO_RR_FORMAT_UDF(INPUT_DATE DATE)
Copy

パラメーター

INPUT_DATE DATE

変換する日付。

戻り値

RR 形式に調整された入力日付。

移行例

入力:

Select TO_DATE('17-NOV-30','DD-MON-RR') as A from DUAL;
Copy

出力:

Select
PUBLIC.DATE_TO_RR_FORMAT_UDF( TO_DATE('17-NOV-30', 'DD-MON-YY')) as A from DUAL;
Copy

使用例

入力:

PUBLIC.CONVERT_DATE_WITH_RR_FORMAT_UDF(TO_DATE('17-NOV-30','DD-MON-YY')) as A from DUAL;
Copy

出力:

2030-11-17
Copy

FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, INTEGER)

定義

このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records の機能をカバーするために使用されます。

FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT INTEGER)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": false,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": true,
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "RESULT": {
    "TEST": []
  },
  "ROWCOUNT": 0
}
Copy

DBMS_OUTPUT.PUT_LINE_UDF

定義

このユーザー定義関数(UDF)は、Oracle DBMS_OUTPUT_PUT_LINE 関数の機能を再現するために使用されます。

DBMS_OUTPUT.PUT_LINE_UDF(LOG VARCHAR)
Copy

警告

この UDF を使用すると、パフォーマンスに影響が出る可能性があることに注意してください。情報のログを開始するには、関数内の実装のコメントを外します。

パラメーター

LOG VARCHAR

コマンドラインに表示する情報。

戻り値

ログに記録された情報を varchar で返します。

使用例

入力:

SELECT DBMS_OUTPUT.PUT_LINE_UDF(to_varchar(123));
Copy

出力:

123
Copy

DATEDIFF_UDF(DATE, DATE)

定義

このユーザー定義関数(UDF)は、2つの日付の間に減算がある場合に使用します。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM DATE)
Copy

パラメーター

FIRST_PARAM DATE

減算の被減数を表す日付。

SECOND_PARAM DATE

減算の減数を表す日付。

戻り値

日付と日付の間の日数を整数で返します。

使用例

入力:

SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), TO_DATE('2023-01-26'));
Copy

出力:

365
Copy

OPEN_BULK_CURSOR_UDF (OBJECT, ARRAY)

定義

このユーザー定義関数(UDF)は、バインドでカーソルを開くために使用されます。

OPEN_BULK_CURSOR_UDF(CURSOR OBJECT, BINDINGS ARRAY)
Copy

パラメーター

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();
Copy

出力:

{
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "ROWCOUNT": 0
}
Copy

CLOSE_BULK_CURSOR_UDF

定義

このユーザー定義関数(UDF)は、カーソルの結果セットを格納する仮テーブルを削除し、カーソルプロパティを初期状態にリセットします。

CLOSE_BULK_CURSOR_UDF(CURSOR OBJECT)
Copy

パラメーター

CURSOR OBJECT

確認して閉じるカーソル。

戻り値

カーソルプロパティをリセットしたオブジェクトを返します。

移行例

入力:

-- [procedure initial logic]
CLOSE C1;
-- [procedure ending logic]
Copy

出力:

C1 := (
            CALL CLOSE_BULK_CURSOR_UDF(:C1)
        );
Copy

使用例

入力:

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;
$$;
Copy

出力:

{
  "FOUND": null,
  "ISOPEN": false,
  "NAME": "MY_CURSOR",
  "NOTFOUND": null,
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "ROWCOUNT": -1
}
Copy

DATEADD_UDF (FLOAT, DATE)

定義

このユーザー定義関数(UDF)は、 浮動小数点 または タイムスタンプ日付 のようなタイプ間の和がある場合に使用されます。

PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM DATE)
Copy

パラメーター

FIRST_PARAM FLOAT

2番目の日付パラメーターに追加される浮動小数点数。

SECOND_PARAM DATE

最初のパラメーターの数字に追加される日付。

戻り値

浮動小数点数と指定した日付の和を返します。

使用例

入力:

SELECT DATEADD_UDF(6, '2022-02-14');
Copy

出力:

2022-02-20
Copy

BFILENAME_UDF

定義

この関数は、ディレクトリ名とファイル名のパラメーターを 文字列 として受け取ります。そして、 「\」 を使って連結を返します。

警告

文字 「\」 は、オペレーティングシステムのファイル連結文字と一致するように変更する必要があります。

PUBLIC.BFILENAME_UDF (DIRECTORYNAME STRING, FILENAME STRING);
Copy

パラメーター

DIRECTORYNAME STRING

文字列 として処理されるディレクトリ名。

FILENAME STRING

連結されるファイル名。

戻り値

ディレクトリ名とファイル名を 「\」 で連結した 文字列 を返します。

移行例

入力:

SELECT BFILENAME ('directory', 'filename.jpg') FROM DUAL;
Copy

出力:

SELECT
PUBLIC.BFILENAME_UDF('directory', 'filename.jpg') FROM DUAL;
Copy

使用例

入力:

SELECT PUBLIC.BFILENAME_UDF('directory', 'filename.jpg');
Copy

出力:

directory\filename.jpg
Copy

REGEXP_LIKE_UDF (STRING, STRING)

定義

このユーザー定義関数(UDF)は、Oracle REGEXP_LIKE の機能をサポートするために使用されます。

REGEXP_LIKE_UDF(COL STRING, PATTERN STRING)
Copy

パラメーター

COL STRING

パターンで評価される文字列。

PATTERN STRING

確認するパターン。

戻り値

ブール式を返します。パターンが文字列に一致する場合はtrue、一致しない場合はfalse。

使用例

入力:

SELECT REGEXP_LIKE_UDF('San Francisco', 'San* [fF].*');
Copy

出力:

TRUE
Copy

UTL_FILE.FOPEN_UDF (VARCHAR, VARCHAR, VARCHAR)

定義

このユーザー定義関数(UDF)は、Oracle UTL_FILE_FOPEN プロシージャの機能を再現するために使用されます。

UTL_FILE.FOPEN_UDF(PACKAGE_VARIABLE VARCHAR, FILENAME VARCHAR, OPEN_MODE VARCHAR)
Copy

パラメーター

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();
Copy

出力:

null
Copy

FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT)

定義

このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソルのみを受け取るバリエーションです。

FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      MY_TABLE",
  "RESULT": [
    {
      "TEST": "TEST_A"
    }
  ],
  "ROWCOUNT": 1
}
Copy

FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, FLOAT, ARRAY)

定義

このユーザー定義関数(UDF)は、追加される情報やカーソルの動作を決定する異なる入力パラメーターで、 fetch bulk records の機能をカバーするために使用されます。

FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT FLOAT, COLUMN_NAMES ARRAY)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": true,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": false,
  "QUERY": "   SELECT * FROM\n      BULKCOLLECTTABLE",
  "RESULT": {
    "TEST": [
      "TEST_A"
    ]
  },
  "ROWCOUNT": 1
}
Copy

FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, INTEGER)

定義

このユーザー定義関数(UDF)は、Oracleの FETCH 関数を再現するために使用されます。これはカーソルとリミットを受け取るバリエーションです。

FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, LIMIT INTEGER)
Copy

パラメーター

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();
Copy

出力:

{
  "FOUND": false,
  "ISOPEN": true,
  "NAME": "MY_CURSOR",
  "NOTFOUND": true,
  "QUERY": "   SELECT * FROM\n      MY_TABLE",
  "RESULT": [],
  "ROWCOUNT": 0
}
Copy