SnowConvert AI - Function References for Oracle¶
DATEDIFF_UDF(TIMESTAMP, NUMBER)¶
定义¶
此用户定义的函数 (UDF) 用于从 timestamp 中减去 number(即天数)。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM NUMBER)
参数¶
FIRST_PARAM TIMESTAMP
代表被减数的 timestamp。
SECOND_PARAM NUMBER
代表减数的天数。
返回¶
返回一个时间戳,其值为 timestamp 与 number 之差。
使用示例¶
输入:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', 3);
输出:
2024-01-23
DATEDIFF_UDF(TIMESTAMP, DATE)¶
定义¶
此用户定义的函数 (UDF) 用于从 timestamp 中减去 date。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM DATE)
参数¶
FIRST_PARAM TIMESTAMP
代表被减数的 timestamp。
SECOND_PARAM DATE
代表减数的 date。
返回¶
返回一个整数,其值为 timestamp 与 number 之差。
使用示例¶
输入:
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 年 1 月 1 日 BC 以来的天数)。
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。
使用示例¶
警告
可通过两种方法查看文件中的行:通过 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 文件。要访问该文件,需要为文件创建一个 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();
输出:
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) 用于 float 数与 timestamp 之间进行加法运算的情况。
PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM TIMESTAMP)
参数¶
FIRST_PARAM FLOAT
将与第二个浮点参数相加的时间戳数字。
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
在 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();
输出:
{
"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) 用于日期与 float 或 timestamp 类型的数据之间进行加法运算的情况。
PUBLIC.DATEADD_UDF(FIRST_PARAM DATE, SECOND_PARAM FLOAT)
参数¶
FIRST_PARAM DATE
要与第二个参数中的数字相加的日期。
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) 用于从 date 中减去 timestamp。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM TIMESTAMP)
参数¶
FIRST_PARAM DATE
用作被减数的日期。
SECOND_PARAM TIMESTAMP
要从第一个参数中减去的 timestamp。
返回¶
返回一个整数,其中包含第一个参数与第二个参数之间的天数。
使用示例¶
输入:
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()
参数¶
无输入参数。
返回¶
返回带有随机数的 double 数字。
使用示例¶
输入:
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)
参数¶
low DOUBLE
需要考虑的初始限值。
high 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
在 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();
输出:
{
"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)¶
定义¶
此用户定义的函数 (UDF) 是
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
在 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();
输出:
{
"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) 用于 timestamp 与 float 数之间进行加法运算的情况。
PUBLIC.DATEADD_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM FLOAT)
参数¶
FIRST_PARAM TIMESTAMP
将与第二个浮点参数相加的时间戳数字。
SECOND_PARAM FLOAT
将与第一个参数中的时间戳相加的浮点数。
返回¶
返回一个时间戳,其值为指定时间戳与指定浮点数之和。
使用示例¶
输入:
SELECT DATEADD_UDF(current_timestamp, 1);
输出:
2024-01-26 13:22:49.354
DATEDIFF_UDF(TIMESTAMP, TIMESTAMP)¶
定义¶
此用户定义的函数 (UDF) 从一个 timestamp 中减去另一个 timestamp。
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM TIMESTAMP)
参数¶
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');
输出:
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
日期为待格式化的 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');
输出:
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
在 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();
输出:
{
"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) 用于执行两个日期之间的减法运算。
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) 用于在 float 或 timestamp 类型与 date 之间进行加法运算的情况。
PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM DATE)
参数¶
FIRST_PARAM FLOAT
将与第二个日期参数相加的浮点数。
SECOND_PARAM DATE
要与第一个参数中的数字相加的日期。
返回¶
返回指定浮点数与指定日期之和。
使用示例¶
输入:
SELECT DATEADD_UDF(6, '2022-02-14');
输出:
2022-02-20
BFILENAME_UDF¶
定义¶
此函数将目录名称和文件名称参数作为 string。然后使用 '\' 的形式返回串联后的结果。
警告
必须更改字符 '\' 以匹配操作系统文件串联字符。
PUBLIC.BFILENAME_UDF (DIRECTORYNAME STRING, FILENAME STRING);
参数¶
DIRECTORYNAME STRING
要作为 string 处理的目录名称。
FILENAME STRING
要串联的文件名称。
返回¶
返回一个 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 文件。要访问该文件,需要为文件创建一个 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();
输出:
null
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT)¶
定义¶
此用户定义的函数 (UDF) 用于复制 Oracle 中 FETCH 的功能。这是它仅用于接收游标的变体。
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT)
参数¶
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();
输出:
{
"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
在 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();
输出:
{
"FOUND": false,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": true,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [],
"ROWCOUNT": 0
}