Todos os produtos
Search
Central de documentação

:Funções Oracle suportadas

Última atualização: Jul 04, 2026

A partir da versão V1.3 do Hologres, a extensão Orafce está disponível para oferecer suporte a diversas funções Oracle. Este tópico descreve a sintaxe e os detalhes das funções Oracle compatíveis com o Hologres.

Instale a extensão Orafce

Antes de utilizar qualquer função Oracle em um banco de dados do Hologres, execute o comando abaixo como superusuário para instalar a extensão Orafce. A instalação ocorre no nível do banco de dados, sendo necessária apenas uma vez por banco. Caso crie um novo banco de dados, será preciso executar o comando novamente:

-- Install the Orafce extension.
create extension if not exists orafce; 
-- Uninstall the Orafce extension.
DROP EXTENSION orafce;	
Nota

Ao instalar a extensão Orafce, diversos schemas são criados automaticamente, incluindo dbms_alert, dbms_assert, dbms_output, dbms_pipe, dbms_random, dbms_utility, oracle, plunit, plvchr, plvdate, plvlex, plvstr, plvsubst e utl_file. Antes de prosseguir com a instalação, verifique se não existem schemas com esses mesmos nomes no banco de dados. Caso contrário, a instalação da extensão Orafce falhará.

Funções Oracle

A tabela a seguir detalha as funções Oracle suportadas no Hologres.

  • Funções de data

    Function

    Description

    Example

    Return value

    add_months(day date, value int)

    Adiciona à data informada no primeiro parâmetro a quantidade de meses definida no segundo parâmetro, retornando uma nova data.

    SELECT add_months(current_date, 2);

    2022-05-21

    oracle_last_day(value date)

    Retorna o último dia do mês correspondente à data especificada.

    SELECT oracle_last_day('2022-05-01');

    2022-05-31

    next_day(value date, weekday text)

    Indica a data do próximo dia da semana especificado, contando a partir da data inicial fornecida. O primeiro parâmetro define a data base e o segundo, o nome do dia da semana (exemplo: Friday).

    SELECT next_day('2022-05-01', 'FRIDAY');

    2022-05-06

    next_day(value date, weekday integer)

    Calcula a data do próximo dia da semana indicado numericamente, iniciando a contagem a partir da data base. O segundo parâmetro aceita valores de 1 a 7, onde 1 representa domingo, 2 representa segunda-feira e assim sucessivamente até 7 para sábado.

    • SELECT next_day('2022-05-01', 1);
    • SELECT next_day('2022-05-01', 2);
    • 2022-05-08

    • 2022-05-02

    months_between(date1 date, date2 date)

    Calcula a diferença em meses entre duas datas. O resultado é positivo quando date1 é posterior a date2 e negativo quando date1 é anterior a date2.

    • SELECT months_between('2022-01-01', '2021-11-01');
    • SELECT months_between('2021-11-01', '2022-01-01');
    • 2

    • -2

    trunc(value timestamp with time zone, fmt text)

    Trunca um timestamp conforme a unidade de medida especificada no segundo parâmetro. Utilize 'Y' para obter o primeiro dia do ano ou 'Q' para o primeiro dia do trimestre correspondente ao timestamp informado.

    • SELECT TRUNC(current_date,'Y');
    • SELECT TRUNC(current_date,'Q');
    • 2022-01-01

    • 2022-01-01

    trunc(value timestamp with time zone)

    Retorna o timestamp da data especificada, zerando por padrão as horas, minutos e segundos.

    SELECT TRUNC('2022-03-01'::timestamp);

    2022-03-01 00:00:00

    round(value timestamp with time zone, fmt text)

    Arredonda o timestamp para o valor mais próximo com base na unidade indicada, como semana ou dia.

    SELECT round('2022-02-22 13:11:22'::timestamp, 'YEAR');

    2022-01-01 00:00:00

    round(value timestamp with time zone)

    Efetua o arredondamento do timestamp para o dia mais próximo.

    SELECT round('2022-02-22 13:11:22'::timestamp);

    2022-02-23 00:00:00

    round(value date, fmt text)

    Devolve uma data arredondada conforme o formato definido.

    • SELECT round(TO_DATE('27-OCT-00','DD-MON-YY'), 'YEAR');
    • SELECT round(TO_DATE('27-FEB-00','DD-MON-YY'), 'YEAR');
    • 2001-01-01

    • 2000-01-01

    round(value date)

    Fornece a data arredondada seguindo o formato padrão.

    SELECT round(TO_DATE('27-FEB-00','DD-MON-YY'));

    2000-02-27

  • Funções de string

    Function

    Description

    Example

    Return value

    instr(str text, patt text, start integer, nth integer)

    Busca uma substring dentro de uma string e retorna sua posição. Se não encontrar, devolve 0. O parâmetro start define onde a busca começa, enquanto nth indica qual ocorrência da substring deve ser localizada.

    • SELECT instr('Hologres', 'o',1,2);
    • SELECT instr('Hologres', 'o',1,1);
    • 4

    • 2

    instr(str text, patt text, start integer)

    Localiza a primeira ocorrência de uma substring, iniciando a varredura a partir da posição determinada pelo parâmetro start.

    SELECT instr('Hologres', 'o',4);

    4

    instr(str text, patt text)

    Procura pela substring desde o início da string fornecida.

    SELECT instr('Hologres', 'o');

    2

    plvstr.rvrs(str text, start integer, end integer)

    Inverte a ordem dos caracteres no intervalo delimitado pelos parâmetros start e end dentro da string especificada em str.

    SELECT plvstr.rvrs('Hologres', 5,6);

    rg

    plvstr.rvrs(str text, start integer)

    Reverte a sequência de caracteres começando na posição indicada por start até o final da string.

    SELECT plvstr.rvrs('Hologres', 4);

    sergo

    plvstr.rvrs(str text)

    Inverte completamente a ordem de todos os caracteres da string.

    SELECT plvstr.rvrs('Hologres');

    sergoloH

    substr(str text, start integer)

    Extrai os caracteres desde a posição definida em start até o término da string.

    • SELECT substr('Hologres', 1);
    • SELECT substr('Hologres', 4);
    • Hologres

    • ogres

    substr(str text, start integer, len integer)

    Obtém uma quantidade específica de caracteres (definida em len) a partir da posição inicial indicada por start.

    • SELECT substr('Hologres', 5, 5);
    • SELECT substr('Oracle functions', 5, 5);
    • gresle

    • lefun

  • Outras funções

    Function

    Description

    Example

    Return value

    listagg(str text)

    Agrupa valores de texto em uma única string concatenada.

    SELECT listagg(t) FROM (VALUES('holo'), ('gres')) as l(t);

    hologres

    listagg(str text, str text)

    Concatena textos em uma única string, utilizando o segundo parâmetro como separador entre os valores.

    SELECT listagg(t, '.') FROM (VALUES('holo'), ('gres')) as l(t);

    holo.gres

    concat(str text, str text)

    Une duas strings em uma só.

    SELECT concat('holo','gres');

    hologres

    • concat(str text, anyarray)

    • concat(anyarray, str text)

    • concat(anyarray, anyarray)

    Combina dados que podem ser do mesmo tipo ou de tipos diferentes.

    • SELECT concat('hologres', 123);
    • SELECT concat(123, 123);
    • SELECT concat(current_date, 123);
    • hologres123

    • 123123

    • 2022-03-21123

    • nanvl(num real, num real)

    • nanvl(num decimal, num decimal)

    Caso o primeiro parâmetro seja do tipo NUMERIC, retorna o seu próprio valor; caso contrário, devolve o valor do segundo parâmetro.

    • SELECT nanvl('NaN', 1,1);
    • SELECT nanvl('1,2', 1,1);
    • 1,1

    • 1,2

    bitand(num bigint, num bigint)

    Executa uma operação lógica AND bit a bit entre dois números inteiros, retornando apenas uma linha.

    • SELECT bitand(1,3);
    • SELECT bitand(2,6);
    • SELECT bitand(4,6);
    • 1

    • 2

    • 4

    nvl2(anyelement, anyelement, anyelement)

    Se o primeiro parâmetro for nulo, retorna o terceiro parâmetro. Do contrário, retorna o segundo.

    • SELECT nvl2(null, 1, 2);
    • SELECT nvl2(0, 1, 2);
    • 2

    • 1

    lnnvl(boolean)

    Retorna true quando o parâmetro é nulo ou false. Retorna false apenas quando o parâmetro é true.

    • SELECT lnnvl(null);
    • SELECT lnnvl(false);
    • SELECT lnnvl(true);
    • t

    • t

    • f

    sinh(num double precision)

    Calcula o seno hiperbólico do valor informado.

    SELECT sinh(0,1);

    0,100166750019844

    tanh(num double precision)

    Fornece a tangente hiperbólica do número especificado.

    SELECT tanh(3);

    0,995054753686731

    cosh(num double precision)

    Determina o cosseno hiperbólico do valor passado.

    SELECT cosh(0,2);

    1,02006675561908

    decode(expression, value, return [,value,return]... [, default])

    Compara uma expressão com valores de busca e retorna o resultado correspondente se houver correspondência, ou o valor padrão caso nenhuma condição seja atendida.

    CREATE TABLE t1(id int, name varchar(20));
    INSERT INTO t1 values(1,'alibaba');
    INSERT INTO t1 values(2,'hologres');
    • SELECT decode(id, 1, 'alibaba', 2, 'hologres', 'not found') from t1;
    • SELECT decode(id, 3, 'alibaba', 4, 'hologres', 'not found') from t1;
    • hologres
          alibaba
    • not found
          not found

    dump(anyelement)

    Gera um texto contendo o código do tipo de dado, o tamanho em bytes e a representação interna do primeiro parâmetro.

    SELECT dump('hologres');

    Typ=25 Len=12: 48.0.0.0.104.111.108.111.103.114.101.115

    dump(anyelement, num integer)

    Retorna um texto onde o segundo parâmetro define o sistema numérico usado na representação interna do primeiro parâmetro.

    • SELECT dump('hologres', 10);
    • SELECT dump('hologres', 16);
    • Typ=25 Len=12: 48.0.0.0.104.111.108.111.103.114.101.115

    • Typ=25 Len=12: 30.0.0.0.68.6f.6c.6f.67.72.65.73

    nlssort(str text, str text)

    Ordena os dados seguindo critérios específicos de idioma ou configuração.

    Execute os comandos a seguir para criar uma tabela e inserir dados:

    CREATE TABLE t1 (name text); INSERT INTO t1 VALUES('Anne'), ('anne'), ('Bob'), ('bob');
    • SELECT * FROM t1 ORDER BY nlssort(name, 'en_US.UTF-8');
    • SELECT*FROM t1 ORDER BY nlssort(name, 'C');
    • anne
          Anne
          bob
          Bob
    • Anne
          Bob
          anne
          bob