Mostrando postagens com marcador PL/Sql. Mostrar todas as postagens
Mostrando postagens com marcador PL/Sql. Mostrar todas as postagens

segunda-feira, 24 de agosto de 2015

Diferença entre DML , DDL , DCL e TCL


DML
DML é abreviação de Data Manipulation LanguageEle é usado para recuperar, armazenar, modificar, apagar, inserir e atualizar dados no banco de dados, ou seja, utilizado para gerenciamento de dados do esquema.
Exemplos de comandos: SELECT, INSERT, UPDATE, DELETE, MERGE, LOCK TABLE, CALL, EXPLAIN

DDL
DDL é abreviação de Data Definition LanguageEle. é usado para criar e modificar a estrutura dos objetos de banco de dados.
Exemplos de comandos: CREATE, ALTER, DROP, ROLES, COMMENTS, RENAME, TRUNCATE.

DCL
DCL é abreviação de Data Control LanguageEle é usado para criar permissões e integridade referencial e também é usado para controlar o acesso a banco de dados.
Exemplo de comandos: GRANT, REVOKE
TCL
TCL é abreviação de Transactional Control LanguageEle é usado para gerenciar diferentes operações que ocorrem dentro de um banco de dados (Mudanças realizadas dor DML).
Exemplo de comandos: COMMIT, ROLLBACK, SAVEPOINT.

Obrigado

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 criado para 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+...