SnowConvert AI - Oracle - Pacotes internos¶
Referência de tradução para pacotes internos.
Descrição¶
O Oracle fornece muitos pacotes PL/SQL com o servidor Oracle para ampliar a funcionalidade do banco de dados e fornecer acesso a PL/SQL aos recursos SQL. (Pacotes incorporados do Oracle PL/SQL)
DBMS_OUTPUT¶
Descrição¶
O pacote
DBMS_OUTPUTé especialmente útil para exibir informações de depuração PL/SQL. (Oracle PL/SQL DBMS_OUTPUT)
Procedimento PUT_LINE¶
Referência de tradução para DBMS_OUTPUT.PUT_LINE.
Descrição¶
Esse procedimento coloca uma linha no buffer. (Oracle PL/SQL DBMSOUTPUT.PUT_LINE)
Esse UDF é implementado usando uma tabela temporária para inserir os dados a serem exibidos para replicar a funcionalidade da função DBMS_OUTPUT.PUT_LINE do Oracle.
Sintaxe¶
Procedimento personalizado¶
Dados de configuração¶
O esquema DBMS_OUTPUT deve ser criado.
DBMS_OUTPUT.PUT_LINE(VARCHAR)¶
Parâmetros¶
LOG: Item em um buffer que você deseja exibir.
Nota
Observe que isso está usando uma tabela temporária; se você quiser que os dados persistam após o término de uma sessão, remova TEMPORARY de CREATE TABLE.
As tabelas temporárias armazenam dados transitórios não permanentes. Elas só existem na sessão em que foram criadas e persistem apenas durante o restante da sessão. Após o término da sessão, os dados armazenados na tabela são completamente removidos do sistema e, portanto, não podem ser recuperados, nem pelo usuário que criou a tabela nem pelo Snowflake.
Aviso
Se você não usar a tabela temporária, lembre-se de que pode precisar de outra coluna na tabela em que o USER que executa DBMS_OUTPUT.PUT_LINE UDF for inserido para evitar confusão.
Exemplo de uso¶
Oracle¶
Resultado¶
Snowflake¶
Resultado¶
Problemas conhecidos¶
O código UDF permanecerá comentado porque pode afetar o desempenho; se o usuário decidir usá-lo, basta descomentar o código.
O usuário pode modificar o UDF para que as informações necessárias sejam inseridas na tabela DBMS_OUTPUT.PUT_LINE.
DBMS_LOB¶
Descrição¶
O pacote
DBMS_LOBfornece subprogramas para operar emBLOBs,CLOBs,NCLOBs,BFILEseLOBstemporários. Você pode usarDBMS_LOBpara acessar e manipular partes específicas de um LOB ou um LOBs completo. (Oracle PL/SQL DBMS_LOB)
Função SUBSTR¶
Translation reference for DBMS_LOB.SUBSTR.
Descrição¶
Essa função retorna a
quantidadede bytes ou caracteres de um LOB, a partir de umdeslocamentoabsoluto do início do LOB. (Oracle PL/SQL DBMS_LOB.SUBSTR)
Essa função interna foi substituída pela função SUBSTR do Snowflake. No entanto, há algumas diferenças.
Nota
Os parâmetros amount e offset são invertidos no Snowflake
Sintaxe¶
Sobrecargas de funções¶
DBMS_LOB.SUBSTR(“string”, amount, offset)
Exemplo de uso¶
Oracle¶
Resultado¶
Snowflake¶
Resultado¶
DBMS_LOB.SUBSTR(B LOB, amount, offset)¶
Exemplo de uso¶
Aviso
Os valores dos resultados no Oracle e no Snowflake estão sendo convertidos de bytes em cadeias de caracteres para facilitar a compreensão da função.
Para o Snowflake, considere a possibilidade de usar:
hex_decode_string( to_varchar(SUBSTR(blob_column, 1, 6), “HEX”));
e para Oracle considere usar:
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(blob_column, 1, 6));
para obter o resultado como uma cadeia de caracteres.
Oracle¶
Resultado¶
Snowflake¶
Resultado¶
Aviso
Observação: UTL_RAW.CAST_TO_RAW() não está sendo transformado atualmente em TO_BINARY(). A função é usada para mostrar a equivalência funcional do exemplo.
DBMS_LOB.SUBSTR(CLOB, amount, offset)¶
Exemplo de uso¶
Oracle¶
Resultado¶
Snowflake¶
Resultado¶
Aviso
Observação: UTL_RAW.CAST_TO_RAW() não está sendo transformado atualmente em TO_BINARY(). A função é usada para mostrar a equivalência funcional do exemplo.
DBMS_LOB.SUBSTR(BFILE, amount, offset)¶
Exemplo de uso¶
Usar DBMS_LOB.SUBSTR() em uma coluna BFILE retorna uma substring do conteúdo do arquivo.
Aviso
O próximo exemplo não é uma migração atual, mas um exemplo funcional para mostrar as diferenças da função SUBSTR nos tipos BFILE.
Conteúdo do arquivo (file.txt):
Oracle¶
Log do console¶
Snowflake¶
Colunas BFILE são convertidas em colunas VARCHAR, portanto, a aplicação de uma função SUBSTR na mesma coluna retornaria uma substring do nome do arquivo, não o conteúdo do arquivo.
Resultado¶
SUBSTR(bfile_column, 1, 9) |
|---|
MY_DIR\fi |
Problemas conhecidos¶
1. Using DBMS_LOB.SUBSTR with BFILE columns¶
A transformação atual para os tipos de dados BFILE em colunas é VARCHAR, em que o nome do arquivo é armazenado como uma cadeia de caracteres. Portanto, a aplicação da função SUBSTR em uma coluna BFILE após a transformação retornará uma substring do nome do arquivo, enquanto o Oracle retornaria uma substring do conteúdo do arquivo.
EWIs relacionados¶
SSC-EWI-OR0076: Pacote incorporado não suportado.
SSC-FDM-OR0035: DBMS_OUTPUT.PUTLINE verifique a implementação de UDF.
UTL_FILE¶
Descrição¶
Com o pacote
UTL_FILE, os programas PL/SQL podem ler e gravar arquivos de texto. (Oracle PL/SQL UTL_FILE)
Procedimento FCLOSE¶
Referência de tradução para UTL_FILE.FCLOSE.
Descrição¶
Esse procedimento fecha um arquivo aberto identificado por um identificador de arquivo. (Oracle PL/SQL UTL_FILE.FCLOSE)
Esse procedimento é implementado usando o Snowflake STAGE para armazenar os arquivos de texto gravados.
Sintaxe¶
Dados de configuração¶
O esquema
UTL_FILEdeve ser criado.
Se você quiser fazer o download do arquivo, execute o seguinte comando.
Aviso
O comando GET é executado no Snowflake CLI.
Sobrecargas de procedimentos personalizados¶
UTL_FILE.FCLOSE(VARCHAR)¶
Parâmetros¶
FILE: O manipulador de arquivos ativo retornou da chamada para
UTL_FILE.FOPEN
Funcionalidade¶
Esse procedimento usa a tabela FOPEN_TABLES_LINES criada no procedimento UTL_FILE.FOPEN.
Esse procedimento grava no estágio do utlfile_local_directory todas as linhas com o mesmo FHANDLE do arquivo em FOPEN_TABLES_LINES.
Nota
Observe que esse procedimento usa o estágio que foi criado anteriormente. Por enquanto, se você quiser gravar o arquivo em outro estágio, deverá modificar o nome.
Esses procedimentos são implementados para os estágios internos no
COPY INTO
Exemplo de uso¶
Oracle¶
Aviso
Para executar esse exemplo, consulte ORACLE UTL_FILE
Snowflake¶
Problemas conhecidos¶
1. Modify the procedure for changing the name of the stage.¶
O usuário pode modificar o procedimento se for necessário alterar o nome do estágio.
2. Location static.¶
O local usado para gravar nesse procedimento é estático. Espera-se que uma nova versão do procedimento aumente sua extensibilidade usando o local que tem o parâmetro FILE.
5. Files supported.¶
Por enquanto, esse procedimento só grava arquivos .CSV.
EWIs relacionados¶
SSC-FDM-0015: Tipo de dados não reconhecido.
SSC-FDM-OR0036: Parâmetros de pacotes incorporados desnecessários.
Procedimento FOPEN¶
Referência de tradução para UTL_FILE.FOPEN.
Descrição¶
Esse procedimento abre um arquivo. (Oracle PL/SQL UTL_FILE.FOPEN)
Esse procedimento é implementado usando o Snowflake STAGE para armazenar os arquivos de texto.
O usuário é responsável por fazer o upload dos arquivos locais para o STAGE para serem usados pelo procedimento.
Sintaxe¶
Dados de configuração¶
O esquema
UTL_FILEdeve ser criado.
Crie o estágio
utlfile_local_directory.
Se o valor no parâmetro
OPEN_MODEfor w ou r, será necessário carregar o arquivo no diretórioutlfile_local_directory.
Aviso
O comando PUT é executado no Snowflake CLI.
Sobrecargas de procedimentos personalizados¶
UTL_FILE.FOPEN( VARCHAR, VARCHAR)¶
Parâmetros¶
FILENAME: O nome do arquivo, incluindo a extensão**.**
OPEN_MODE: Especifica como o arquivo é aberto.
Modos abertos¶
O procedimento do pacote incorporado Oracle UTL_FILE.FOPEN suporta seis modos de como abrir o arquivo, mas somente três deles são suportados no procedimento Snowscripting.
OPEN_MODE |
DESCRIPTION |
STATUS |
|---|---|---|
w |
Modo de gravação |
Com suporte |
a |
Modo de anexação |
Com suporte |
r |
Modo de leitura |
Com suporte |
rb |
Modo de bytes de leitura |
Sem suporte |
wb |
Modo de byte de gravação |
Sem suporte |
ab |
Modo de bytes de anexação |
Sem suporte |
Funcionalidade¶
Esse procedimento usa duas tabelas com as quais a operação de abertura de um arquivo será emulada. A tabela FOPEN_TABLES armazenará os arquivos que estão abertos e a tabela FOPEN_TABLES_LINES armazena as linhas que cada arquivo possui.
Se o arquivo for aberto no modo de gravação, um novo arquivo será criado; se for aberto no modo de leitura ou anexação, ele carregará as linhas do arquivo em FOPEN_TABLES_LINES e inserirá o arquivo em FOPEN_TABLES.
Nota
Observe que esse procedimento usa o estágio que foi criado anteriormente. Por enquanto, se você quiser usar outro nome para o estágio, deverá modificar o procedimento.
Esses procedimentos são implementados para os estágios internos no
COPY INTO
Exemplo de uso¶
Oracle¶
Aviso
Para executar esse exemplo, consulte ORACLE UTL_FILE
Snowflake¶
Problemas conhecidos¶
1. Modify the procedure for changing the name of the stage.¶
O usuário pode modificar o procedimento se for necessário alterar o nome do estágio.
2. LOCATION parameter is not used.¶
O parâmetro LOCATION não é usado agora porque o estágio usado no procedimento é estático. Está planejado para uma versão atualizada do procedimento aumentar sua extensibilidade usando esse parâmetro para inserir o nome do estágio em que o arquivo que você deseja abrir está localizado.
3. MAX_LINESIZE parameter is not used.¶
O procedimento do pacote incorporado Oracle UTL_FILE.FOPEN tem o parâmetro MAX_LINESIZE, mas no procedimento Snowscripting ele é removido porque não é usado.
4. OPEN_MODE values supported.¶
Esse procedimento é compatível com os modos write (w), read (r) e append (a) para abrir arquivos.
5. Files supported.¶
Por enquanto, esse procedimento é compatível apenas com arquivos .CSV.
EWIs relacionados¶
SSC-FDM-0015: Tipo de dados não reconhecido.
SSC-FDM-OR0036: UnnecessaryBuiltInPackagesParameters
Procedimento PUT_LINE¶
Referência de tradução para UTL_FILE.PUT_LINE.
Descrição¶
Esse procedimento grava a cadeia de caracteres de texto armazenada no parâmetro buffer no arquivo aberto identificado pelo identificador de arquivo. (Oracle PL/SQL UTL_FILE.PUT_LINE)
Sintaxe¶
Dados de configuração¶
O esquema
UTL_FILEdeve ser criado.
UDF personalizada¶
UTL_FILE.PUT_LINE(VARCHAR, VARCHAR)¶
Parâmetros¶
FILE: O manipulador de arquivos ativo retornou da chamada para
UTL_FILE.FOPENBUFFER: Buffer de texto que contém o texto a ser gravado no arquivo**.**
Funcionalidade¶
Esse procedimento usa a tabela FOPEN_TABLES_LINES criada no procedimento UTL_FILE.FOPEN.
Se o OPEN_MODE do arquivo for write (w) ou append (a), ele insere o buffer em FOPEN_TABLES_LINES, mas se o OPEN_MODE for leitura (r), ele lança a exceção File_is_read_only.
Exemplo de uso¶
Oracle¶
Aviso
Para executar esse exemplo, consulte ORACLE UTL_FILE
Snowflake¶
Problemas conhecidos¶
1. AUTOFLUSH parameter is not used.¶
O procedimento do pacote incorporado Oracle UTL_FILE.PUT_LINE tem o parâmetro AUTOFLUSH, mas no procedimento Snowscripting ele é removido porque não é usado.
EWIs relacionados¶
SSC-FDM-0015: Tipo de dados não reconhecido.
SSC-FDM-OR0036: Parâmetros dos pacotes internos desnecessários.
DBMS_RANDOM¶
Descrição¶
O pacote
DBMS_RANDOMfornece um gerador de números aleatórios integrado. ODBMS_RANDOMnão se destina à criptografia. (Oracle PL/SQL DBMS_RANDOM)
Funções VALUE¶
Referência de tradução para DBMS_RANDOM.VALUE.
Descrição¶
A função básica obtém um número aleatório, maior ou igual a 0 e menor que 1. Como alternativa, você pode obter um número Oracle aleatório
X, em queXé maior ou igual alowe menor quehigh. (Oracle PL/SQL DBMS_RANDOM.VALUE)
Este UDF é implementado usando a função Math.random do Javascript para replicar a funcionalidade da função Oracle DBMS_RANDOM.VALUE.
Sintaxe¶
Sobrecargas personalizadas de UDF¶
Dados de configuração¶
O esquema DBMS_RANDOM deve ser criado.
DBMS_RANDOM.VALUE()¶
Parâmetros¶
Sem parâmetros.
Nota
Observação: O UDF suporta apenas aproximadamente entre 9 e 10 dígitos na parte decimal do número (9 ou 10 dígitos de precisão)
Exemplo de uso¶
Oracle¶
Resultado¶
Nota
A função pode ser denominada_DBMS_RANDOM.VALUE()_ ou DBMS_RANDOM.VALUE.
Snowflake¶
Resultado¶
Nota
No Snowflake, você deve colocar os parênteses.
DBMS_RANDOM.VALUE(NUMBER, NUMBER)
Parâmetros¶
low: O menor
NUMBERa partir do qual um número aleatório é gerado. O número gerado é maior ou igual alow.high: O
NUMBERmais alto usado como limite ao gerar um número aleatório. O número gerado será menor quehigh.
Nota
A função Oracle DBMS_RANDOM.VALUE(low, high) não exige que os parâmetros tenham uma ordem específica, portanto, o Snowflake UDF é implementado para oferecer suporte a esse recurso, sempre retirando o número mais alto e o mais baixo.
O UDF só suporta aproximadamente entre 9 e 10 dígitos na parte decimal do número (9 ou 10 dígitos de precisão).
Exemplo de uso¶
Oracle¶
Resultado¶
Snowflake¶
Resultado¶
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-FDM-OR0033: DBMS_RANDOM.VALUE A precisão do pacote incorporado é menor no Snowflake.