Arquivo da categoria: PL/SQL

Como criar um campo autoincremental no Oracle PL/SQL

O Oracle não tem campos auto incrementais, para simular esta funcionalidade é necessário criar “Sequences”:

CREATE SEQUENCE seqFuncionarios
INCREMENT BY 1
START WITH 1
MAXVALUE 99999
NOCACHE
NOCYCLE;

Para utilizar, a cada linha adicionada ele irá aumentar em 1 (INCREMENT BY 1) o valor desta “sequence”.

INSERT INTO FUNCIONARIOS (ID, NOME) VALUES (seqFuncionarios.nextVal; 'João');
INSERT INTO FUNCIONARIOS (ID, NOME) VALUES (seqFuncionarios.nextVal; 'Roberto');

João terá ID igual a 1 (START WITH 1) e Roberto terá o ID igual a 2 (INCREMENT BY 1: 1 + 1 = 2).

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

ORA-01830: a imagem do formato da data termina antes de converter a string de entrada inteira

ORA-01830: a imagem do formato da data termina antes de converter a string de entrada inteira
01830. 00000 -  "date format picture ends before converting entire input string"
*Cause:    
*Action:

Causa 01: Você deve estar utilizando uma data inválida. Exemplo: 31/06/2016 (Quando o mês em 2016 vai até dia 30);

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como utilizar cursor no PL SQL

Segue abaixo um exemplo básico do uso de cursor na linguagem PL/SQL

DECLARE

  CURSOR Funcionarios IS

      SELECT
        matricula
        nome
      FROM
        funcionario

  registroFuncionario Funcionarios%Rowtype;

BEGIN

     OPEN Funcionarios;

     LOOP
            Fetch Funcionarios Into registroFuncionario;

            EXIT WHEN Funcionarios%NotFound;

              Dbms_Output.Put_Line ('Funcionário: ' || registroFuncionario.matricula || ' - ' || registroFuncionario.nome );

      END LOOP;

      CLOSE Funcionarios;

END;
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como usar a função first_day no PL/SQL

Apesar de ter a função last_day() no Oracle, a função first_day foi deixada para trás. Para encontrar este valor, você pode utilizar o código “trunc(DATA,’MON’)”. Veja o exemplo:


select trunc(sysdate,'MON') from dual;

Se a data atual for dia 27/06/2017, o valor retornado será “01/06/2017”.

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como consultar o primeiro dia do mês atual no PL/SQL


-- ----------------------------------------------------------------------
-- Como receber o primeiro dia do mês atual
-- ----------------------------------------------------------------------

-- SELECT TO_DATE(to_char(trunc(sysdate,'MON')), 'DD/MM/YYYY') FROM DUAL;
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como pesquisar por um texto em todas as Stored Procedures do Banco de Dados Oracle?

Utilize a consulta abaixo:

 SELECT * FROM ALL_source WHERE UPPER(text) LIKE '%TEXTO%'; 

A consulta acima irá pesquisar pela palavra “TEXTO” dentro de todos os procedimentos armazenados contidos no servidor de banco de dados.

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Como utilizar um campo nomeado (ALIAS) em um GROUP BY em uma Consulta SQL

Por incrível que pareça isso não é possível! Então, se tiver um campo calculado, você terá que colocar a formula (ou case) dentro do “Group by”. Mas existe uma forma de contornar este problema, para isso siga o exemplo abaixo:

SELECT
*
FROM (
SELECT
trunc((months_between(sysdate, to_date('17/02/2015','dd/mm/yyyy')))/12) AS idade
FROM DUAL
)
GROUP BY idade
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).