SnowConvert AI - Function References for Oracle

DATEDIFF_UDF(TIMESTAMP, NUMBER)

定义

此用户定义的函数 (UDF) 用于从 timestamp 中减去 number(即天数)。

PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM NUMBER)
Copy

参数

FIRST_PARAM TIMESTAMP

代表被减数的 timestamp

SECOND_PARAM NUMBER

代表减数的天数。

返回

返回一个时间戳,其值为 timestampnumber 之差。

使用示例

输入:

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

输出:

2024-01-23
Copy

DATEDIFF_UDF(TIMESTAMP, DATE)

定义

此用户定义的函数 (UDF) 用于从 timestamp 中减去 date

PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM DATE)
Copy

参数

FIRST_PARAM TIMESTAMP

代表被减数的 timestamp

SECOND_PARAM DATE

代表减数的 date

返回

返回一个整数,其值为 timestampnumber 之差。

使用示例

输入:

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 年 1 月 1 日 BC 以来的天数)。

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。

使用示例

警告

可通过两种方法查看文件中的行:通过 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 文件。要访问该文件,需要为文件创建一个 stage,然后使用 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) 用于 float 数与 timestamp 之间进行加法运算的情况。

PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM TIMESTAMP)
Copy

参数

FIRST_PARAM FLOAT

将与第二个浮点参数相加的时间戳数字。

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

fetch bulk collection 中处理并填充数据的游标。

返回

返回一个对象,包含与获取批量集合的逻辑相关的信息。

使用示例

输入:

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) 用于日期与 floattimestamp 类型的数据之间进行加法运算的情况。

PUBLIC.DATEADD_UDF(FIRST_PARAM DATE, SECOND_PARAM FLOAT)
Copy

参数

FIRST_PARAM DATE

要与第二个参数中的数字相加的日期。

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) 用于从 date 中减去 timestamp

PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM TIMESTAMP)
Copy

参数

FIRST_PARAM DATE

用作被减数的日期。

SECOND_PARAM TIMESTAMP

要从第一个参数中减去的 timestamp

返回

返回一个整数,其中包含第一个参数与第二个参数之间的天数。

使用示例

输入:

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

参数

无输入参数。

返回

返回带有随机数的 double 数字。

使用示例

输入:

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

参数

low DOUBLE

需要考虑的初始限值。

high 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

fetch bulk 中处理并填充数据的游标。

COLUMN_NAMES ARRAY

与该列关联的名称并非初始名称。

返回

返回一个对象,其中包含通过 fetch bulk 所获得的记录。

使用示例

输入:

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)

定义

此用户定义的函数 (UDF) 是

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

fetch bulk collection 中处理并填充数据的游标。

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) 用于 timestampfloat 数之间进行加法运算的情况。

PUBLIC.DATEADD_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM FLOAT)
Copy

参数

FIRST_PARAM TIMESTAMP

将与第二个浮点参数相加的时间戳数字。

SECOND_PARAM FLOAT

将与第一个参数中的时间戳相加的浮点数。

返回

返回一个时间戳,其值为指定时间戳与指定浮点数之和。

使用示例

输入:

SELECT DATEADD_UDF(current_timestamp, 1);
Copy

输出:

2024-01-26 13:22:49.354
Copy

DATEDIFF_UDF(TIMESTAMP, TIMESTAMP)

定义

此用户定义的函数 (UDF) 从一个 timestamp 中减去另一个 timestamp

PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM TIMESTAMP)
Copy

参数

FIRST_PARAM TIMESTAMP

代表被减数的 timestamp

SECOND_PARAM TIMESTAMP

代表减数的 timestamp

返回

返回一个整数,其中包含第一个和第二个时间戳之间的天数之差。

使用示例

输入:

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

日期为待格式化的 string。格式应为 'YYYY-MM-DD"T"HH24:MI:SS.FF',例如:'2024-01-25T23:25:11.120'

请在 此处 查看有关格式化的以下信息。

返回

返回应用新格式的 date

使用示例

输入:

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

fetch bulk 中处理并填充数据的游标。

LIMIT FLOAT

要调用的记录的限制。

COLUMN_NAMES ARRAY

与该列关联的名称并非初始名称。

返回

返回一个对象,其中包含通过 fetch bulk 所获得的记录。

使用示例

输入:

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) 用于执行两个日期之间的减法运算。

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) 用于在 floattimestamp 类型与 date 之间进行加法运算的情况。

PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM DATE)
Copy

参数

FIRST_PARAM FLOAT

将与第二个日期参数相加的浮点数。

SECOND_PARAM DATE

要与第一个参数中的数字相加的日期。

返回

返回指定浮点数与指定日期之和。

使用示例

输入:

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

输出:

2022-02-20
Copy

BFILENAME_UDF

定义

此函数将目录名称和文件名称参数作为 string。然后使用 '\' 的形式返回串联后的结果。

警告

必须更改字符 '\' 以匹配操作系统文件串联字符。

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

参数

DIRECTORYNAME STRING

要作为 string 处理的目录名称。

FILENAME STRING

要串联的文件名称。

返回

返回一个 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 文件。要访问该文件,需要为文件创建一个 stage,然后使用 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

fetch bulk 中处理并填充数据的游标。

返回

返回一个对象,其中包含通过 fetch bulk 所获得的记录。

使用示例

输入:

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

fetch bulk 中处理并填充数据的游标。

LIMIT FLOAT

要调用的记录的限制。

返回

返回一个对象,其中包含通过 fetch bulk 所获得的记录。

使用示例

输入:

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
语言: 中文