segunda-feira, 15 de julho de 2013

Oracle Pl/Sql: Record

Este é um exemplo simples para trabalhar com record
Posteriormente irei mostrar um exemplo como se fosse uma tabela, onde poderemos criar campos, assim não precisaríamos criar uma tabela temporária.





DECLARE
   TYPE TREGISTRO IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
   I        BINARY_INTEGER;
   REGISTRO TREGISTRO;
BEGIN
   REGISTRO(0) := 1;
   REGISTRO(1) := 2;
   REGISTRO(2) := 3;

   I := REGISTRO.FIRST;

   WHILE I IS NOT NULL
   LOOP
      DBMS_OUTPUT.PUT_LINE(REGISTRO(I));
      I := REGISTRO.NEXT(I);
   END LOOP;
END;


quarta-feira, 15 de maio de 2013

Oracle Pl/Sql: Descobrir quantos registros foram alterados


--Após a execução de um insert, delete ou update, Utiliza-se o comando SQL%ROWCOUNT;

DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' Registro(s) alterado(s)');

sexta-feira, 5 de abril de 2013

Oracle Pl/Sql: Mudar e voltar a senha do usuário


--Oracle 10G
SELECT USERNAME
      ,PASSWORD
  FROM DBA_USERS
 WHERE USERNAME = 'USERNAME_USUARIO';

--Oracle 11G
SELECT A.NAME
      ,A.PASSWORD
  FROM SYS.USER$ A

 WHERE NAME = 'USERNAME_USUARIO';

--Guarde o valor da senha em algum lugar
--MUDANDO A SENHA
ALTER USER USERNAME_USUARIO IDENTIFIED BY "NOVA SENHA";

--VOLTANDO A SENHA
ALTER USER USERNAME_USUARIO IDENTIFIED BY VALUES 'SENHA ANTERIOR';


segunda-feira, 25 de março de 2013

Oracle Pl/Sql: Formatar a exibição de um CPF usando expressão regular


SELECT REGEXP_REPLACE('11122233344', '^(\d{3})(\d{3})(\d{3})(\d{2})$', '\1.\2.\3-\4') CPF
  FROM DUAL;

Restrições: O campo deverá conter somente números.

segunda-feira, 25 de fevereiro de 2013

Oracle Pl/Sql: Extrair dia, mês, ano de uma data


SELECT EXTRACT(DAY FROM SYSDATE) AS DIA
      ,EXTRACT(MONTH FROM SYSDATE) AS MES
      ,EXTRACT(YEAR FROM SYSDATE) AS ANO
  FROM DUAL;