tecnologia | consultoria | banco de dados

Oracle - Estruturas de Controle

1) Instrução IF

IF <CONDITION> THEN
STATEMENT1;
STATEMENT2;
...
[ELSIF <CONDITION> THEN
STATEMENT1;
...]
[ELSE
STATEMENT1;
...]
END IF;

2) Instrução CASE

CASE <SELECTOR>
WHEN <EXPRESSION1> THEN <STATEMENT1>
WHEN <EXPRESSION2> THEN <STATEMENT2>
WHEN <EXPRESSION3> THEN <STATEMENT3>
...
[ELSE STATEMENT N]
END;

3) Instrução LOOP

LOOP
<STATEMENT1>;
<STATEMENT2>;
<STATEMENT3>;
...
EXIT [WHEN <CONDITION>];
END LOOP;

WHILE <CONDITION> LOOP
<STATEMENT1>;
<STATEMENT2>;
...
END LOOP;
FOR counter IN [REVERSE] lower..upper LOOP
<STATEMENT1>;
<STATEMENT2>;
<STATEMENT3>;
...
END LOOP;

DECLARE
lower NUMBER := 1;
upper NUMBER := 100;
BEGIN
FOR i IN lower..upper LOOP
DBMS_OUTPUT.PUTLINE('Counter: ' || TO_CHAR(i));
END LOOP;
END;

BEGIN
<<loop1>>
FOR i IN 1..5 LOOP
<<loop2>>
FOR j IN 1..10 LOOP
DBMS_OUTPUT.PUTLINE('i X j ' || TO_CHAR(i * j));
END LOOP loop2;
END LOOP loop1;
END;
Data publicação: 22:28 09/03/2016

Oracle - Exportar dados para Excel (Spool csv)

Excel.bat:
Arquivo com a configuração de conexão com o banco de dados e o arquivo SQL a ser executado.

SQLPLUS schema@servidor/senha @SQL/Excel.sql

Excel.sql:
Arquivo com as configurações do spool e local para geração do arquivo CSV.

SET UNDERLINE OFF 
SET TERM OFF
SET ECHO OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET HEADING OFF
SET FEEDBACK OFF
SET PAUSE OFF
SET PAGESIZE 0
SET LINESIZE 2000
SET VERIFY OFF
SET COLSEP ';'
SPOOL RETORNO/EXCEL.CSV
SELECT
A.EMPLOYEE_ID
,A.FIRST_NAME
,A.LAST_NAME
,A.EMAIL
,A.PHONE_NUMBER
,TO_CHAR(A.HIRE_DATE,'DD/MM/RRRR') AS HIRE_DATE
,A.JOB_ID
,A.SALARY
,TO_CHAR(A.COMMISSION_PCT, 'FM999G999G990D00', 'NLS_NUMERIC_CHARACTERS=,.') AS COMMISSION_PCT
,A.MANAGER_ID
,A.DEPARTMENT_ID
FROM EMPLOYEES A;
SPOOL OFF
EXIT;
Data publicação: 23:53 24/11/2015

Oracle - Expressões regulares

-- Manter apenas números na coluna

SELECT
REGEXP_REPLACE('REGISTRO 123.456.789-10', '[^0-9]+', '')
FROM dual;
-- Resultado: 12345678910
SELECT
REGEXP_REPLACE('ABC12345DEF', '[^[:digit:]]+', '')
FROM dual;
-- Resultado: 12345
SELECT
REGEXP_REPLACE('1A2B3C4D', '\D+', '')
FROM dual;
-- Resultado: 1234

-- Selecionar linhas numéricas

SELECT
e.col1
FROM tb_leandro e
WHERE REGEXP_LIKE(e.col1 , '^[[:digit:]]+$');

-- Selecionar linhas com letras e espaços

SELECT
e.col1
FROM tb_leandro e
WHERE REGEXP_LIKE(e.col1 , '^[[:alpha:][:space:]]+);

-- Contar espaço no início da string antes de algum carácter

SELECT
NVL(LENGTH(REGEXP_SUBSTR(' Four Spaces', '^[[:space:]]+',1,1)),0) AS Result
FROM dual;
-- Resultado: 4
SELECT
REGEXP_INSTR(' Four Spaces', '\S',1,1) AS Result
FROM dual;
-- Resultado: 4
SELECT
NVL(LENGTH(REGEXP_SUBSTR(' Two Spaces', '^[[:space:]]+',1,1)),0) AS Result
FROM dual;
--Resultado: 2

-- Extrair string que possui | como delimitador

SELECT
REGEXP_SUBSTR('One|Two|Three|Four|Five', '[^|]+',1,1) AS Result
FROM dual;
-- Resultado: One
SELECT
REGEXP_SUBSTR('One|Two|Three|Four|Five', '[^|]+',1,4) AS Result
FROM dual;
-- Resultado: Four

-- Extrair primeiro e último valor da string

SELECT
REGEXP_REPLACE('Leandro Sacramento de Paula', ' .+ ', ' ')
From dual;
-- Resultado: Leandro Paula


CARÁCTER FUNÇÃO
\ Carácter de escape
^ Posição inicial da linha (string)
$ Posição final da linha (string)
[ ] Corresponde ao caracteres listados entre os colchetes
[^ ] Não corresponde aos caracteres listados entre os colchetes
( ) Sub-expressão ou grupo. Pode ser uma string ou uma expressão complexa
. Qualquer caractere ("coringa")
+ Uma ou mais ocorrências da sub-expressão precedente
? Zero ou uma ocorrência da sub-expressão precedente
* Zero ou mais ocorrências da sub-expressão precedente
{n} Número de caracteres exatas da sub-expressão precedente
{m,} Número de ocorrências de pelo menos m vezes da sub-expressão precedente
{m,n} Número de ocorrências de pelo menos m vezes, mas não mais que n vezes da sub-expressão precedente
| Alternativa de padrão de busca, por exemplo ('leandro'|'sacramento')
Data publicação: 01:27 13/11/2015
Perfil
Olá jovem Padawan, seja bem vindo! Este site foi criado com o intuito de compartilhar um pouco de conhecimento de Tecnologia da Informação e Business Intelligence.

Linkedin  Youtube

"O sorriso é o símbolo do vencedor." (Masaaki Hatsumi)


Leandro Sacramento, Todos os direitos reservados - 2012 - 2020