segunda-feira, 24 de agosto de 2015
Diferença entre DML , DDL , DCL e TCL
sábado, 20 de abril de 2013
Criação de arquivo utilizando Select–Oracle
Segue dica para geração de arquivo a partir de uma consulta de forma rápida utilizando SqlPlus:
{
echo "set pagesize 0"
echo " Select ColunaExemplo1||','||ColunaExemplo2||','||ColunaExemplo3 ||','||ColunaExemplo4 ||','||ColunaExemplo5||','||
ColunaExemplo6||','||ColunaExemplo7||','||ColunaExemplo8 FROM Tabela_TESTE;"
} | sqlplus -s usário/Senha@Servidor >> Resultado.log
Como saída, será gerado o arquivo resultado.log com o resultado do Select, podendo esse arquivo futuramente ser importado como um CSV.
O script foi utilizado para geração de uma arquivo para uma grande massa de dados e a resposta\performance foi satisfatória.
Obrigado
segunda-feira, 27 de fevereiro de 2012
Fazendo leitura de Campo LOB – Oracle
Segue:
select dbms_lob.substr( campo_clob, 4000, 1 ) from tabela;
[]s
segunda-feira, 2 de agosto de 2010
Gerar senhas randomicamente
select
dbms_random.string('Z', 5)trunc(dbms_random.value(1000, 9999))from dual;
t+
sábado, 29 de agosto de 2009
Substituindo um caracter no campo VARCHAR2
Alguém já precisou fazer uma substituição de um caracter em um campo varchar2?
Segue o exemplo que tive.
Ao consultar a tabela de telefone do cliente obtive o seguinte resultado:
SELECT * FROM TELEFONE;
CODIGO FONE
--------------------------------------- --------------
1 (011)4067/4544
2 (011)4547/3732
3 (011)8556/4564
4 (011)1235/9654
Na exibição do campo FONE, o cliente queria trocar o caracter '/’ pelo ‘-‘, o único jeito que encontrei foi……
SELECT CODIGO, SUBSTR(FONE,1,9)||'-'||SUBSTR(FONE,11,14) FONE FROM TELEFONE;
CODIGO FONE
--------------------------------------- --------------
1 (011)4067-4544
2 (011)4547-3732
3 (011)8556-4564
4 (011)1235-9654
T+
quarta-feira, 20 de maio de 2009
Habilitando a package DBMS_OUTPUT
A Package DBMS_OUTPUT, através da Procedure PUT_LINE, envia as mensagens após uma Transação efetuada com sucesso.
Para que a Package seja habilita e as mensagens sejam apresentadas, basta executar o seguinte comando no prompt do ORACLE:
SET SERVEROUTPUT ON;
Para testar execute a package para que seja mostrada a mensagem:
DBMS_OUTPUT.PUT_LINE(‘Teste da package’);
Para que a package seja desabilitada execute o seguinte comando:
SET SERVEROUTPUT OFF;
Execute novamente a chamada da package DBMS_OUTPUT e perceba que a mensagem não é mais apresentada.
T+
Formas de disparar uma Trigger
A TRIGGER ou GATILHO, nada mais é do que uma “procedure” que é disparada conforme um acontecimento, para alteraçoes em tabelas temos os seguintes eventos:
BEFORE INSERT - Dispara uma vez antes de uma transação INSERT
BEFORE INSERT FOR EACH ROW - Dispara antes de cada novo registro criado/inserido.
AFTER INSERT - Dispara uma vez depois de uma transação INSERT
AFTER INSERT FOR EACH ROW - Dispara depois de cada novo registro criado/inserido.
BEFORE UPDATE - Dispara uma vez antes de uma transação UPDATE
BEFORE UPDATE FOR EACH ROW - Dispara antes de cada novo registro alterado.
AFTER UPDATE - Dispara uma vez depois de uma transação UPDATE
AFTER UPDATE FOR EACH ROW - Dispara depois de cada novo registro alterado.
BEFORE DELETE - Dispara uma vez antes de uma transação DELETE
BEFORE DELETE FOR EACH ROW - Dispara antes de cada novo registro apagado.
AFTER DELETE - Dispara uma vez depois de uma transação DELETE
AFTER DELETE FOR EACH ROW - Dispara depois de cada novo registro apagado.
T+
Renomeando uma primary key
Primeiro vamos criar uma tabela chamada NOTA_FISCAL
create table NOTA_FISCAL (NOTA_ID number(38));
Depois criamos a PRIMARY KEY
alter table NOTA_FISCAL add constraint PK_NOTA primary key(NOTA_ID);
Agora vamos para a parte que interessa, vamos alterar o nome da primary key (PK_NOTA) para PK_NOTA_FISCAL
alter table NOTA_FISCAL rename constraint PK_NOTA to PK_NOTA_FISCAL;
Sabemos que ao criar uma primary key automaticamente um index é criado com o mesmo nome da primary key, não é necessário mas para mantermos o padrão de nosso banco de dados vamos alterar o nome do index também.
alter index PK_NOTA rename to PK_NOTA_FISCAL;
T+
segunda-feira, 4 de maio de 2009
TYPE% VS % ROWTYPE - Qual é a diferença?
Ambos são usados para definir variáveis no PL/SQL da mesma forma como está definido na base de dados. Se o tipo ou precisão de uma coluna for alterada, o bloco/programa PL/SQL automaticamente pega a nova definição da coluna na base de dados.
O type% e ROWTYPE% ajuda a reduzir custos de manutenção permitindo que os programas se adaptem ao banco de dados com as alterações realizadas nas colunas.
TYPE% é utilizado para declarar uma variável com o mesmo tipo de uma determinada coluna da tabela:
DECLARE
v_EmpName emp.ename%TYPE;
BEGIN
SELECT ename INTO v_EmpName FROM emp WHERE ROWNUM = 1; DBMS_OUTPUT.PUT_LINE('Name = ' v_EmpName);
END;/
ROWTYPE% é usado para declarar uma variavel contendo todos os campos de uma tabela, ou seja, é usado para armazenar uma linha da tabela:
DECLARE v_emp emp%ROWTYPE;
BEGIN
v_emp.empno := 10;
v_emp.ename := 'XXXXXXX';
END;/
T+
terça-feira, 24 de março de 2009
Retira acentos ou "enters" que o usuário tenha inserido
Segue o exemplo de uma função muito util...
CREATE OR REPLACE FUNCTION F_TIRA_ACENTOS( V_TEXTO_ACENTUADO VARCHAR2 )
RETURN VARCHAR2 IS
V_TEMP VARCHAR2( 32767 );
BEGIN
-- retira acentos e enters que o usuário tenha inserido.
SELECT TRANSLATE(V_TEXTO_ACENTUADO,
'ÁÉÍÓÚáéíóúÇçÀÈÌÒÙàèìòùÃãÕõÂâÊêÔôºªäëïöüÄËÏÖÜ',
'AEIOUaeiouCcAEIOUaeiouAaOoAaEeOo..aeiouAEIOU')
INTO v_temp
FROM DUAL;
For i in 0..31 Loop
v_temp := replace( v_temp, chr( i ) , null );
End Loop;
RETURN V_TEMP;
END;
T+...