SnowConvert: Referências de funções para Oracle¶
DATEDIFF_UDF(TIMESTAMP, NUMBER)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para subtrair um número
(que é um número de dias) de um carimbo de data/hora
.
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM NUMBER)
Parâmetros¶
FIRST_PARAM
TIMESTAMP
O registro de data e hora
que representa o minuendo.
SECOND_PARAM
NUMBER
O número de dias que representa o subtraendo.
Retornos¶
Retorna um carimbo de data/hora com a diferença entre o carimbo de data/hora
e o número
.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', 3);
Saída:
2024-01-23
DATEDIFF_UDF(TIMESTAMP, DATE)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para subtrair uma data
de um carimbo de data/hora
.
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM DATE)
Parâmetros¶
FIRST_PARAM
TIMESTAMP
O registro de data e hora
que representa o minuendo.
SECOND_PARAM
DATE
A data
que representa o subtraendo.
Retornos¶
Retorna um número inteiro com a diferença entre o carimbo de data e hora
e a data
.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800', TO_DATE('2023-01-26'));
Saída:
365
DATE_TO_JULIAN_DAYS_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) transforma a data gregoriana em data juliana (o número de dias desde 1º de janeiro de 4712 BC.).
PUBLIC.DATE_TO_JULIAN_DAYS_UDF(INPUT_DATE DATE)
Parâmetros¶
INPUT_DATE
DATE
A data gregoriana a ser transformada.
Retornos¶
Retorna a representação da data juliana.
Exemplo de migração¶
Entrada:
Select TO_CHAR(SYSDATE, 'J') as A from DUAL;
Saída:
Select
PUBLIC.DATE_TO_JULIAN_DAYS_UDF(CURRENT_TIMESTAMP()) as A from DUAL;
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATE_TO_JULIAN_DAYS_UDF(DATE '1998-12-25');
Saída:
2451173
UTL_FILE.PUT_LINE_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade do procedimento Oracle UTL_FILE_PUT_LINE.
UTL_FILE.PUT_LINE_UDF(FILE VARCHAR,BUFFER VARCHAR)
Parâmetros¶
FILE
VARCHAR
O arquivo para abrir e salvar o novo buffer.
BUFFER
VARCHAR
O buffer a ser salvo no arquivo definido.
Retornos¶
Retorna um varchar com o resultado.
Exemplo de uso¶
Aviso
Para revisar as linhas do arquivo, há duas maneiras: baixando o arquivo do Snowflake CLI ou revisando brevemente as informações com SELECT * FROM UTL_FILE.FOPEN_TABLES_LINES;
mas somente se o arquivo não tiver sido fechado.
Entrada:
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();
Saída:
null
UTL_FILE.FOPEN_UDF (VARCHAR,VARCHAR)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade do procedimento Oracle UTL_FILE_FOPEN
.
UTL_FILE.FOPEN_UDF(FILENAME VARCHAR,OPEN_MODE VARCHAR)
Parâmetros¶
FILENAME
VARCHAR
O arquivo a ser aberto.
OPEN_MODE
VARCHAR
Indica o modo em que o arquivo estará disponível.
Retornos¶
Retorna um varchar com o resultado.
Exemplo de uso¶
Aviso
UTL_FILE.FOPEN_UDF
permite abrir um arquivo .csv. Para acessar o arquivo, é necessário criar um estágio
para o arquivo e usar o Snowflake CLI para carregá-lo.
Entrada:
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();
Saída:
null
JSON_VALUE_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) reproduz a função JSON_VALUE para extrair um único resultado de uma variável JSON.
JSON_VALUE_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING, RETURNING_TYPE STRING, ON_ERROR_MESSAGE VARIANT, ON_EMPTY_MESSAGE VARIANT)
Parâmetros¶
JSON_OBJECT
VARIANT
A variável JSON da qual os valores serão extraídos.
JSON_PATH
STRING
O caminho JSON que indica onde os valores estão localizados dentro do JSON_OBJECT.
RETURNING_TYPE
STRING
O tipo a ser retornado.
ON_ERROR_MESSAGE
VARIANT
A mensagem de erro a ser adicionada, se necessário.
ON_EMPTY_MESSAGE
VARIANT
A mensagem de erro a ser adicionada em caso de mensagem vazia.
Retornos¶
Retorna um único valor especificado pelo JSON_PATH dentro do JSON_OBJECT. Se o resultado não for um valor único, retorna uma mensagem de erro padrão ou uma mensagem de erro definida nos parâmetros de entrada.
Exemplo de uso¶
Entrada:
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'));
Saída:
"Empty message"
DATEADD_UDF (FLOAT, TIMESTAMP)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada nos casos em que há uma adição entre um número float
e um carimbo de data/hora
.
PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM TIMESTAMP)
Parâmetros¶
FIRST_PARAM
FLOAT
O número do registro de data e hora que será adicionado com o segundo parâmetro float.
SECOND_PARAM
DATE
O número do float a ser adicionado ao registro de data e hora no primeiro parâmetro.
Retornos¶
Retorna um carimbo de data/hora com a adição entre o carimbo de data/hora e o número flutuante especificado.
Exemplo de uso¶
Entrada:
SELECT DATEADD_UDF(1, current_timestamp);
Saída:
2024-01-30 18:47:16.988
FETCH_BULK_COLLECTIONS_UDF (OBJECT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade de buscar coleções em massa no Oracle. Essa versão da função recebe apenas o cursor.
FETCH_BULK_COLLECTIONS_UDF(CURSOR OBJECT)
Parâmetros¶
CURSOR
OBJECT
O cursor que é processado e preenchido com os dados na busca de coleções em massa
.
Retornos¶
Retorna um objeto com informações relacionadas à lógica de busca de coleções em massa.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
[
"TEST_A"
]
],
"ROWCOUNT": 1
}
DATEADD_UDF (DATE, FLOAT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada nos casos em que há uma adição entre uma data e um tipo como float
ou timestamp
.
PUBLIC.DATEADD_UDF(FIRST_PARAM DATE, SECOND_PARAM FLOAT)
Parâmetros¶
FIRST_PARAM
DATE
A data a ser adicionada com o número no segundo parâmetro.
SECOND_PARAM
FLOAT
O número do float que será adicionado ao primeiro parâmetro de data.
Retornos¶
Retorna a adição entre a data e o número flutuante especificado.
Exemplo de migração¶
Entrada:
SELECT TO_DATE('05/11/21', 'dd/mm/yy') + 3.4 from dual;
Saída:
SELECT
PUBLIC.DATEADD_UDF( TO_DATE('05/11/21', 'dd/mm/yy'), 3.4) from dual;
Exemplo de uso¶
Entrada:
SELECT DATEADD_UDF('2022-02-14',6);
Saída:
2022-02-20
DATEDIFF_UDF(DATE, TIMESTAMP)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para subtrair um carimbo de data/hora
de uma data
.
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM TIMESTAMP)
Parâmetros¶
FIRST_PARAM
DATE
A data sobre a subtração está concluída.
SECOND_PARAM
TIMESTAMP
O registro de data e hora
a ser subtraído do primeiro parâmetro.
Retornos¶
Retorna um número inteiro com os dias entre o primeiro e o segundo parâmetro.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), '2022-02-14 15:31:00');
Saída:
711
DBMS_RANDOM.VALUE_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) replica a funcionalidade da função Oracle DBMS_RANDOM.VALUE.
DBMS_RANDOM.VALUE_UDF()
Parâmetros¶
Não há parâmetros de entrada.
Retornos¶
Retorna um número double
com um número aleatório.
Exemplo de uso¶
Entrada:
SELECT DBMS_RANDOM.VALUE_UDF();
Saída:
0.6666235896
DBMS_RANDOM.VALUE_UDF (DOUBLE, DOUBLE)¶
Definição¶
Essa função definida pelo usuário (UDF) replica a funcionalidade da função Oracle DBMS_RANDOM.VALUE.
DBMS_RANDOM.VALUE_UDF(low DOUBLE, high DOUBLE)
Parâmetros¶
baixo
DOUBLE
O limite inicial a ser considerado.
alto
DOUBLE
O limite de delimitação que coordena com o primeiro parâmetro.
Retornos¶
Retorna um número double
com um número aleatório entre os limites especificados.
Exemplo de uso¶
Entrada:
SELECT DBMS_RANDOM.VALUE_UDF(1.1, 2.2);
Saída:
1.637802374
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, ARRAY)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para cobrir a funcionalidade de busca de registros em massa
com diferentes parâmetros de entrada que determinam as informações adicionadas ou o comportamento do cursor.
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, COLUMN_NAMES ARRAY)
Parâmetros¶
CURSOR
OBJECT
O cursor que está sendo processado.
COLUMN_NAMES
ARRAY
Os nomes das colunas que estão associados ao cursor.
Retornos¶
Retorna um objeto com as informações processadas.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"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)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade de FETCH no Oracle. Essa é a variação em que ele recebe o cursor e os nomes das colunas.
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, COLUMN_NAMES ARRAY)
Parâmetros¶
CURSOR
OBJECT
O cursor que é processado e preenchido com os dados na busca em massa
.
COLUMN_NAMES
ARRAY
O nome associado à coluna não é o nome inicial.
Retornos¶
Retorna um objeto com os registros de busca em massa
.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"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¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para transformar uma data juliana nos formatos: JD Edwards, YYYYDDD (astronômico) e YYYYDDD (ordinal).
JULIAN_TO_GREGORIAN_DATE_UDF(JULIAN_DATE CHAR(7), FORMAT_SELECTED CHAR(1))
Parâmetros¶
JULIAN_DATE
CHAR
A data juliana a ser transformada.
FORMAT_SELECTED
CHAR
O formato necessário para a lógica. Por exemplo, 'E'
, 'J'
, 'R'
. Astronomia padronizada ou 'J'
é o formato padrão.
Retornos¶
Retorna uma variante com a representação de data juliana.
Exemplo de uso¶
Entrada:
SELECT JULIAN_TO_GREGORIAN_DATE_UDF('098185');
Saída:
'1998-07-04' --(a.k.a Sat Jul 04 1998)
TIMESTAMP_DIFF_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para as operações aritméticas de registros de data e hora e para a funcionalidade de equivalência no Snowflake.
TIMESTAMP_DIFF_UDF(LEFT_TS TIMESTAMP, RIGHT_TS TIMESTAMP )
Parâmetros¶
LEFT_TS TIMESTAMP
O valor mínimo.
RIGHT_TS TIMESTAMP
O valor do subtraendo.
Retornos¶
Retorna um varchar com a diferença resultante entre os registros de data e hora.
Exemplo de uso¶
Entrada:
SELECT TIMESTAMP_DIFF_UDF(TO_TIMESTAMP('2024-01-31 11:47:20.532 -0800'), TO_TIMESTAMP('2024-01-31 11:47:20.532 -0800'));
Saída:
-000000000 00:00:00.00000000
REGEXP_LIKE_UDF (STRING, STRING, STRING)¶
Definição¶
Essa função definida pelo usuário (UDF) é
REGEXP_LIKE_UDF(COL STRING, PATTERN STRING, MATCHPARAM STRING)
Parâmetros¶
COL STRING
A cadeia de caracteres a ser avaliada com o padrão.
PATTERN STRING
O padrão a ser verificado.
MATCHPARAM STRING
O parâmetro de correspondência que determinará se há distinção entre maiúsculas e minúsculas ou não.
Retornos¶
Retornos
Exemplo de uso¶
Entrada:
SELECT REGEXP_LIKE_UDF('san Francisco', 'San* [fF].*', 'i');
Saída:
TRUE
FETCH_BULK_COLLECTIONS_UDF (OBJECT, FLOAT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade de buscar coleções em massa no Oracle. Essa versão da função recebe o cursor e o valor limite para a contagem de linhas.
FETCH_BULK_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT FLOAT)
Parâmetros¶
CURSOR
OBJECT
O cursor que é processado e preenchido com os dados na busca de coleções em massa
.
LIMIT
FLOAT
O limite para os registros a serem chamados.
Retornos¶
Retorna um objeto com informações relacionadas à lógica de busca de coleções em massa.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [
[
"TEST_A"
]
],
"ROWCOUNT": 1
}
INIT_CURSOR_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) serve para inicializar um objeto de cursor com a funcionalidade equivalente.
INIT_CURSOR_UDF(NAME VARCHAR, QUERY VARCHAR)
Parâmetros¶
NAME
VARCHAR
O nome do cursor.
QUERY
VARCHAR
A consulta que está associada ao cursor.
Retornos¶
Retorna um objeto com as informações do cursor.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"ISOPEN": false,
"NAME": "MY_CURSOR",
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": -1
}
UPDATE_PACKAGE_VARIABLE_STATE_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) atualiza os valores da variável de pacote fornecidos. É um wrapper para a função Snowflake SETVARIABLE().
UPDATE_PACKAGE_VARIABLE_STATE_UDF (VARIABLE VARCHAR, NEW_VALUE VARCHAR)
Parâmetros¶
VARIABLE
VARCHAR
O nome da variável para definir o valor.
NEW_VALUE
VARCHAR
O valor que será armazenado.
Retornos¶
Retorna um varchar com as informações da variável atualizada.
Exemplo de uso¶
Aviso
Por favor, reveja a existência da variável.
Entrada:
CALL PUBLIC.UPDATE_PACKAGE_VARIABLE_STATE_UDF('MY_LOCAL_VARIABLE', '1');
Saída:
1
OPEN_BULK_CURSOR_UDF (OBJECT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para abrir um cursor sem vínculos.
OPEN_BULK_CURSOR_UDF(CURSOR OBJECT)
Parâmetros¶
CURSOR
OBJECT
O cursor a ser processado como aberto.
Retornos¶
Retorna um objeto com as informações atuais do cursor.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"ISOPEN": true,
"NAME": "MY_CURSOR",
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": 0
}
DATEADD_UDF (TIMESTAMP, FLOAT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada nos casos em que há uma adição entre um carimbo de data/hora
e um número float
.
PUBLIC.DATEADD_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM FLOAT)
Parâmetros¶
FIRST_PARAM
TIMESTAMP
O número do registro de data e hora que será adicionado com o segundo parâmetro float.
SECOND_PARAM
FLOAT
O número do float a ser adicionado ao registro de data e hora no primeiro parâmetro.
Retornos¶
Retorna um carimbo de data/hora com a adição entre o carimbo de data/hora e o número flutuante especificado.
Exemplo de uso¶
Entrada:
SELECT DATEADD_UDF(current_timestamp, 1);
Saída:
2024-01-26 13:22:49.354
DATEDIFF_UDF(TIMESTAMP, TIMESTAMP)¶
Definição¶
Essa função definida pelo usuário (UDF) subtrai um carimbo de data e hora
de outro carimbo de data e hora
.
PUBLIC.DATEDIFF_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM TIMESTAMP)
Parâmetros¶
FIRST_PARAM
TIMESTAMP
O registro de data e hora
que representa o minuendo.
SECOND_PARAM
TIMESTAMP
O registro de data e hora
que representa o subtraendo.
Retornos¶
Retorna um número inteiro com a diferença de dias entre o primeiro e o segundo carimbo de data/hora.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATEDIFF_UDF('2024-01-26 22:00:50.708 -0800','2023-01-26 22:00:50.708 -0800');
Saída:
365
UTL_FILE.FCLOSE_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade do procedimento Oracle UTL_FILE_FCLOSE
.
UTL_FILE.FCLOSE_UDF(FILE VARCHAR)
Parâmetros¶
FILE
VARCHAR
O arquivo a ser processado e fechado.
Retornos¶
Retorna um varchar com o resultado.
Exemplo de uso¶
Aviso
O UTL_FILE.FCLOSE_UDF
fecha o arquivo que está sendo processado. Para revisar o resultado ou manipular arquivos, é necessário usar o console do Snowflake CLI. O console do Snowflake CLI permite o upload ou download de um arquivo.
Entrada:
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();
Saída:
null
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para cobrir a funcionalidade de busca de registros em massa
com diferentes parâmetros de entrada que determinam as informações adicionadas ou o comportamento do cursor.
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT)
Parâmetros¶
CURSOR
OBJECT
O cursor que está sendo processado.
Retornos¶
Retorna um objeto com as informações processadas.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"FOUND": true,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": false,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"RESULT": {
"TEST": [
"TEST_A"
]
},
"ROWCOUNT": 1
}
CAST_DATE_UDF¶
Definição¶
A função processa um carimbo de data/hora em formato de cadeia de caracteres para uma data. Ela retorna uma data com o formato especificado.
PUBLIC.CAST_DATE_UDF(DATESTR STRING)
Parâmetros¶
DATESTR
STRING
A data como uma cadeia de caracteres
a ser formatada. O formato deve ser “YYYY-MM-DD"T"HH24:MI:SS.FF'
por exemplo, '2024-01-25T23:25:11.120'
.
Leia as seguintes informações sobre formatação aqui.
Retornos¶
Retorna uma data
com o novo formato aplicado.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.CAST_DATE_UDF('2024-01-25T23:25:11.120');
Saída:
2024-01-25
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT, FLOAT, ARRAY)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade de FETCH no Oracle. Essa é a variação em que ele recebe o cursor, o limite e os nomes das colunas.
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, LIMIT FLOAT, COLUMN_NAMES ARRAY)
Parâmetros¶
CURSOR
OBJECT
O cursor que é processado e preenchido com os dados na busca em massa
.
LIMIT
FLOAT
O limite para os registros a serem chamados.
COLUMN_NAMES
ARRAY
O nome associado à coluna não é o nome inicial.
Retornos¶
Retorna um objeto com os registros de busca em massa
.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"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)¶
Definição¶
Essa função definida pelo usuário (UDF) aplica uma subtração de dias sobre uma data.
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM INTEGER)
Parâmetros¶
FIRST_PARAM
DATE
A data inicial para aplicar a subtração.
SECOND_PARAM
INTEGER
O número de dias a ser subtraído do primeiro parâmetro de data.
Retornos¶
Retorna a data após a subtração do número de dias indicado.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), 365);
Saída:
2023-01-26
DATE_TO_RR_FORMAT_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) transforma a data para o formato datetime do oracle RR
PUBLIC.DATE_TO_RR_FORMAT_UDF(INPUT_DATE DATE)
Parâmetros¶
INPUT_DATE
DATE
A data para transformar.
Retornos¶
A data de entrada com os anos ajustados para o formato RR.
Exemplo de migração¶
Entrada:
Select TO_DATE('17-NOV-30','DD-MON-RR') as A from DUAL;
Saída:
Select
PUBLIC.DATE_TO_RR_FORMAT_UDF( TO_DATE('17-NOV-30', 'DD-MON-YY')) as A from DUAL;
Exemplo de uso¶
Entrada:
PUBLIC.CONVERT_DATE_WITH_RR_FORMAT_UDF(TO_DATE('17-NOV-30','DD-MON-YY')) as A from DUAL;
Saída:
2030-11-17
FETCH_BULK_RECORD_COLLECTIONS_UDF (OBJECT, INTEGER)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para cobrir a funcionalidade de busca de registros em massa
com diferentes parâmetros de entrada que determinam as informações adicionadas ou o comportamento do cursor.
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT INTEGER)
Parâmetros¶
CURSOR
OBJECT
O cursor que está sendo processado.
LIMIT
INTEGER
O limite da contagem de linhas.
Retornos¶
Retorna um objeto com as informações processadas.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"FOUND": false,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": true,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"RESULT": {
"TEST": []
},
"ROWCOUNT": 0
}
DBMS_OUTPUT.PUT_LINE_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade da função Oracle DBMS_OUTPUT_PUT_LINE.
DBMS_OUTPUT.PUT_LINE_UDF(LOG VARCHAR)
Aviso
Observe que o desempenho pode ser afetado pelo uso deste UDF. Para iniciar o registro de informações, descomente a implementação dentro da função.
Parâmetros¶
LOG
VARCHAR
As informações a serem exibidas na linha de comando.
Retornos¶
Retorna um varchar
com as informações registradas.
Exemplo de uso¶
Entrada:
SELECT DBMS_OUTPUT.PUT_LINE_UDF(to_varchar(123));
Saída:
123
DATEDIFF_UDF(DATE, DATE)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada quando há uma subtração entre duas datas.
PUBLIC.DATEDIFF_UDF(FIRST_PARAM DATE, SECOND_PARAM DATE)
Parâmetros¶
FIRST_PARAM
DATE
A data que representa o minuendo na subtração.
SECOND_PARAM
DATE
A data que representa o subtraendo na subtração.
Retornos¶
Retorna um número inteiro com o número de dias entre as datas.
Exemplo de uso¶
Entrada:
SELECT PUBLIC.DATEDIFF_UDF(TO_DATE('2024-01-26'), TO_DATE('2023-01-26'));
Saída:
365
OPEN_BULK_CURSOR_UDF (OBJECT, ARRAY)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para abrir um cursor com vínculos.
OPEN_BULK_CURSOR_UDF(CURSOR OBJECT, BINDINGS ARRAY)
Parâmetros¶
CURSOR
OBJECT
O cursor a ser processado como aberto.
BINDINGS
ARRAY
O vínculo que está relacionado ao cursor.
Retornos¶
Retorna um objeto com as informações atuais do cursor.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"ISOPEN": true,
"NAME": "MY_CURSOR",
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": 0
}
CLOSE_BULK_CURSOR_UDF¶
Definição¶
Essa função definida pelo usuário (UDF) exclui a tabela temporária que armazena o conjunto de resultados do cursor e redefine as propriedades do cursor para seu estado inicial.
CLOSE_BULK_CURSOR_UDF(CURSOR OBJECT)
Parâmetros¶
CURSOR
OBJECT
O cursor que é verificado e fechado.
Retornos¶
Retorna um objeto com as propriedades do cursor redefinidas.
Exemplo de migração¶
Entrada:
-- [procedure initial logic]
CLOSE C1;
-- [procedure ending logic]
Saída:
C1 := (
CALL CLOSE_BULK_CURSOR_UDF(:C1)
);
Exemplo de uso¶
Entrada:
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;
$$;
Saída:
{
"FOUND": null,
"ISOPEN": false,
"NAME": "MY_CURSOR",
"NOTFOUND": null,
"QUERY": " SELECT * FROM\n BULKCOLLECTTABLE",
"ROWCOUNT": -1
}
DATEADD_UDF (FLOAT, DATE)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada nos casos em que há uma adição entre um tipo como float
ou carimbo de data/hora
e uma data
.
PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM DATE)
Parâmetros¶
FIRST_PARAM
FLOAT
O número do float que será adicionado ao segundo parâmetro de data.
SECOND_PARAM
DATE
A data a ser adicionada com o número no primeiro parâmetro.
Retornos¶
Retorna a adição entre o número flutuante e a data especificada.
Exemplo de uso¶
Entrada:
SELECT DATEADD_UDF(6, '2022-02-14');
Saída:
2022-02-20
BFILENAME_UDF¶
Definição¶
A função usa o nome do diretório e o parâmetro filename como uma cadeia de caracteres
. Em seguida, retorna uma concatenação usando '\'.
Aviso
O caractere '\'
deve ser alterado para corresponder ao caractere de concatenação de arquivos do sistema operacional.
PUBLIC.BFILENAME_UDF (DIRECTORYNAME STRING, FILENAME STRING);
Parâmetros¶
DIRECTORYNAME
STRING
O nome do diretório a ser processado como uma cadeia de caracteres
.
FILENAME
STRING
O nome do arquivo a ser concatenado.
Retornos¶
Retorna uma cadeia de caracteres
que contém o nome do diretório e o nome do arquivo concatenados por um '\'
.
Exemplo de migração¶
Entrada:
SELECT BFILENAME ('directory', 'filename.jpg') FROM DUAL;
Saída:
SELECT
PUBLIC.BFILENAME_UDF('directory', 'filename.jpg') FROM DUAL;
Exemplo de uso¶
Entrada:
SELECT PUBLIC.BFILENAME_UDF('directory', 'filename.jpg');
Saída:
directory\filename.jpg
REGEXP_LIKE_UDF (STRING, STRING)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para dar suporte à funcionalidade do Oracle REGEXP_LIKE
.
REGEXP_LIKE_UDF(COL STRING, PATTERN STRING)
Parâmetros¶
COL STRING
A cadeia de caracteres a ser avaliada com o padrão.
PATTERN STRING
O padrão a ser verificado.
Retornos¶
Retorna uma expressão booliana. Verdadeiro se o padrão corresponder à cadeia de caracteres; caso contrário, falso.
Exemplo de uso¶
Entrada:
SELECT REGEXP_LIKE_UDF('San Francisco', 'San* [fF].*');
Saída:
TRUE
UTL_FILE.FOPEN_UDF (VARCHAR, VARCHAR, VARCHAR)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade do procedimento Oracle UTL_FILE_FOPEN
.
UTL_FILE.FOPEN_UDF(PACKAGE_VARIABLE VARCHAR, FILENAME VARCHAR, OPEN_MODE VARCHAR)
Parâmetros¶
PACKAGE_VARIABLE
VARCHAR
A variável relacionada à abertura do arquivo.
FILENAME
VARCHAR
O arquivo a ser aberto.
OPEN_MODE
VARCHAR
Indica o modo em que o arquivo estará disponível.
Retornos¶
Retorna um varchar com o resultado.
Exemplo de uso¶
Aviso
UTL_FILE.FOPEN_UDF
permite abrir um arquivo .csv. Para acessar o arquivo, é necessário criar um estágio
para o arquivo e usar o Snowflake CLI para carregá-lo.
Entrada:
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();
Saída:
null
FETCH_BULK_COLLECTION_RECORDS_UDF (OBJECT)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade de FETCH no Oracle. Essa é a variação em que ele recebe apenas o cursor.
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT)
Parâmetros¶
CURSOR
OBJECT
O cursor que é processado e preenchido com os dados na busca em massa
.
Retornos¶
Retorna um objeto com os registros de busca em massa
.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"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)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para cobrir a funcionalidade de busca de registros em massa
com diferentes parâmetros de entrada que determinam as informações adicionadas ou o comportamento do cursor.
FETCH_BULK_RECORD_COLLECTIONS_UDF(CURSOR OBJECT, LIMIT FLOAT, COLUMN_NAMES ARRAY)
Parâmetros¶
CURSOR
OBJECT
O cursor que está sendo processado.
LIMIT
FLOAT
O limite da contagem de linhas.
COLUMN_NAMES
ARRAY
Os nomes das colunas que estão associados ao cursor.
Retornos¶
Retorna um objeto com as informações processadas.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"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)¶
Definição¶
Essa função definida pelo usuário (UDF) é usada para replicar a funcionalidade de FETCH no Oracle. Essa é a variação em que ele recebe o cursor e o limite.
FETCH_BULK_COLLECTION_RECORDS_UDF(CURSOR OBJECT, LIMIT INTEGER)
Parâmetros¶
CURSOR
OBJECT
O cursor que é processado e preenchido com os dados na busca em massa
.
LIMIT
FLOAT
O limite para os registros a serem chamados.
Retornos¶
Retorna um objeto com os registros de busca em massa
.
Exemplo de uso¶
Entrada:
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();
Saída:
{
"FOUND": false,
"ISOPEN": true,
"NAME": "MY_CURSOR",
"NOTFOUND": true,
"QUERY": " SELECT * FROM\n MY_TABLE",
"RESULT": [],
"ROWCOUNT": 0
}