quarta-feira, 27 de maio de 2009

Dropando um Database no Oracle 10G

Desde 10g, é possível excluir uma base de dados da Oracle 10g com o novo comando SQL DROP DATABASE.
O comando se livra dos datafiles, redo log files, controlfiles e spfile.

Segue o exemplo do comando, lembrando que o mesmo deve ser executado conectado como SYSDBA:

shutdown abort;
startup mount exclusive restrict;
drop database;

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+