Академический Документы
Профессиональный Документы
Культура Документы
Dicas Oracle 8i
Algumas dicas de como criar um Banco de Dados em Oracle.8i
Page 1 of 21
connect system/manager Drop user aluno1 cascade; create user aluno1 identified by senha; grant connect,resource to aluno1; connect aluno1/senha
CREATE TABLE DEPARTAMENTO (CODIGO NUMBER(6) PRIMARY KEY, NOME VARCHAR2(25) NOT NULL, COD_REGIAO NUMBER(6)) / CREATE TABLE CARGO (CODIGO NUMBER(6) PRIMARY KEY, NOME VARCHAR2(25) NOT NULL) / CREATE TABLE EMPREGADO (CODIGO NUMBER(6) PRIMARY KEY, SOBRENOME VARCHAR2(25) NOT NULL, NOME VARCHAR2(25) NOT NULL, COD_DEPTO NUMBER(6), COD_CARGO NUMBER(6),
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 2 of 21
//load data append into table nombre_tabla when (24:25)='01' -- si en esta posicin el valor es 01 carga en una tabla determinada ( Campo1 position (028:045) char, Campo2 position (012:012) char, Campo3 position (067:084) char, Campo4 position (046:057) date "rrmmddhh24miss", Campo5 position (060:066) integer external , Campo6 position (088:095) char, Campo7 position (096:103) char ) into table nombre_table when (24:25)='05' -- si en esta posicin el valor es 05 carga en otra tabla o en la misma dejando fuera cualquier valor distinto de 01 y 05 ( Campo1 position (028:045) char, Campo2 position (012:012) char, Campo3 position (067:084) char, Campo4 position (046:057) date "rrmmddhh24miss", Campo5 position (060:066) integer external , Campo6 position (088:095) char, Campo7 position (096:103) char )
Criando SEQUENCE
CREATE SEQUENCE S_REGIAO NOCACHE NOCYCLE / CREATE SEQUENCE S_DEPARTAMENTO NOCACHE NOCYCLE / CREATE SEQUENCE S_CARGO NOCACHE NOCYCLE / CREATE SEQUENCE S_EMPREGADO NOCACHE
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 3 of 21
INSERT INTO REGIAO(CODIGO, NOME) VALUES(S_REGIAO.NEXTVAL,'AMERICA DO NORTE') / INSERT INTO REGIAO(CODIGO, NOME) VALUES(S_REGIAO.NEXTVAL,'AMERICA DO SUL') / INSERT INTO REGIAO(CODIGO, NOME) VALUES(S_REGIAO.NEXTVAL,'AFRICA') / INSERT INTO REGIAO(CODIGO, NOME) VALUES(S_REGIAO.NEXTVAL,'ASIA') / INSERT INTO REGIAO(CODIGO, NOME) VALUES(S_REGIAO.NEXTVAL,'EUROPA') /
INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'FINANCEIRO',1) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'CONTABILIDADE',1) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'INFORMATICA',1) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'VENDAS',1) /
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 4 of 21
INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'FINANCEIRO',2) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'CONTABILIDADE',2) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'INFORMATICA',2) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'VENDAS',2) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'RECURSOS HUMANOS',2) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'FINANCEIRO',3) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'CONTABILIDADE',3) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'INFORMATICA',3) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'VENDAS',3) / INSERT INTO DEPARTAMENTO(CODIGO, NOME, COD_REGIAO) VALUES(S_DEPARTAMENTO.NEXTVAL,'RECURSOS HUMANOS',3)
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 5 of 21
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 6 of 21
INSERT INTO EMPREGADO (CODIGO,SOBRENOME,NOME,COD_DEPTO,COD_CARGO,SALARIO,GERENTE,DATA_ADMISSAO,PCT_COMISSAO) VALUES(S_EMPREGADO.NEXTVAL,'COSTA','CARLA',1,2,254.00,1, TO_DATE('01061980','DDMMYYYY'),5) / INSERT INTO EMPREGADO (CODIGO,SOBRENOME,NOME,COD_DEPTO,COD_CARGO,SALARIO,GERENTE,DATA_ADMISSAO,PCT_COMISSAO) VALUES(S_EMPREGADO.NEXTVAL,'COSTA','PEDRO',1,3,123.00,1, TO_DATE('01071980','DDMMYYYY'),NULL) / INSERT INTO EMPREGADO (CODIGO,SOBRENOME,NOME,COD_DEPTO,COD_CARGO,SALARIO,GERENTE,DATA_ADMISSAO,PCT_COMISSAO) VALUES(S_EMPREGADO.NEXTVAL,'GARCIA','ALEXANDRE',1,4,40.00,2, TO_DATE('01071980','DDMMYYYY'),7) / INSERT INTO EMPREGADO (CODIGO,SOBRENOME,NOME,COD_DEPTO,COD_CARGO,SALARIO,GERENTE,DATA_ADMISSAO,PCT_COMISSAO) VALUES(S_EMPREGADO.NEXTVAL,'GOMES','RICARDO',1,4,100.23,2, TO_DATE('01071980','DDMMYYYY'),NULL) /
ACCEPT p_coddigo PROMPT 'Entre com o codigo do Departamento:'; ACCEPT p_nome PROMPT 'Entre com o nome do Departamento:'; ACCEPT p_cod_regiao PROMPT 'Entre com o codigo da Regiao:'; DECLARE v_codigo departamento.codigo%type:=&p_codigo; v_nome departamento.nome%type:=&'p_nome'; v_cod_regiao departamento.cod_regiao%type:=&pcod_regiao; BEGIN --Estou consultando de acordo com p_cad_emp INSERT INTO DEPARTAMENTO(codigo,nome,cod_regiao) values(v_codigo,v_nome,v_cod_regiao); end; edit /
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 7 of 21
ACCEPT p_coddigo PROMPT 'entre com o codigo do Departamento:'; ACCEPT p_nome PROMPT 'entre como nome do Departamento:'; ACCEPT p_cod_regiao PROMPT 'entre com o codigo da Regiao:';
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 8 of 21
BEGIN
LOOP ISERT INTO PEDIDO(codigo) values(v_contador); v_CONTADOR:=VCONTADOR+1; EXIT WHEN v_quantidade<v_contador; ENDLOOP; END;
BEGIN
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 9 of 21
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 10 of 21
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 11 of 21
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 12 of 21
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 13 of 21
Para forcar a renovao de apenas uma tabela: EXECUTE DBMS_SNAPSHOT.REFRESH('tabela','F'); /*forced refresh*/
Verso do Banco
Para verificar a verso de seu banco de dados, digite: SELECT * FROM V$VERSION;
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 14 of 21
Built-in set_lov_property
Se um determinado campo dependendo de uma determinada situao, necessitar apresentar ora uma lista de valores ora outra, pode ser utilizada a buit-in set_lov_property.
List_values: lv_produtos Record_group: rg_frutas Select subcodigo, nome From produtos Where codigo = 1 Order by nome Record_group: rg_bebidas Select subcodigo, nome From produtos Where codigo = 2 Order by nome
Se a condio for apresentar apenas a lista de frutas ento: set_lov_property('lv_produtos', group_name, 'rg_frutas'); Se a condio for apresentar apenas a lista de bebidas ento: set_lov_property('lv_produtos', group_name, 'rg_bebidas');
Condies de query
A pesquisa realizada em um bloco base table pode ter filtros. As condies para se realizar a pesquisa podem ser programadas de duas formas: na trigger pre-query - Ser necessrio definir a default_where. Constri-se a clusula condicional que ser atribuda ao default_where atravs da built-in set_block_property. Exemplo: Bloco: pedido Colunas: codigo_pedido data_pedido valor_pedido declare def_where varchar2(500) := null;
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 15 of 21
na property where clause do bloco basta digitar a condio: valor_pedido > 500
Ao converter um form 4.5 para 5.0, todos os canvas e windows perdem suas referncias. Em forms pequenos (com poucas windows), basta referenci-los novamente. Em forms maiores (com muitas windows, 5 ou mais) podem ocorrer os erros FRM-30161: Inconsistent relationship between window and its primary canvas e FRM-30162 Inconsistent relationship between window and its vertical/horizontal toolbar. Quando este erro ocorre, a nica forma de corrigi-lo : excluir a window e a recriar, associando o canvas respectivo.
Mensagens de erro
As mensagens exibidas pelo form, podem ser tratadas atravs das triggers on-error e on-message. Podem ser utilizadas libraries com a traduo das mensagens, tratando cada cdigo de erro apresentado pelo form.
system.message_level
Quando a varivel de sistema :system.message_level alterada pelo programador, podem ser inibidas algumas mensagens apresentadas pelo form. Deve ser verificado o nvel da mensagem apresentada. Os nveis so 0, 5, 10, 15, 20 e 25, sendo que o nvel 0 (zero) default, fazendo com que o form apresente todas as mensagens.
Utilizao do Post
Cuidado ao utilizar o post, porque no um commit efetivo. Essa built-in funciona como se fosse um commit, porm s faz efeito para a sesso que est realizando o post; as outras sees no "enxergam" as possveis alteraes, incluses ou excluses realizadas pelo post. O post pode alterar o status do form para query e realiza todas as checagens em triggers disparadas pelo commit (por ex.: pre-insert, pre-update).
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 16 of 21
No forms 4.5, a varivel :system.current_datetime representa a data/hora do servidor. No forms 5.0, a varivel mudou de nome. a :system.effective_date. E a :system.current_datetime representa a data/hora do sistema operacional do client (micro). Sugesto: servidor, funo ao alter-la Criar uma funo "fdata" no banco para retornar a data do que seja executada junto com o startup do banco. Utilizar esta invs da varivel de sistema para no correr o risco de ter que em todos os programas, caso hajam mudanas como essa.
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 17 of 21
ORACLE_HOME ficava no C:\ORAWIN95 nas verses 7 at 8.0; agora na 8i o ORACLE_HOME fica no C:\ORACLE\OraHome1
Finalizando listener
em Windows ou UNIX: lsnrctl stop se for Oracle 8.0: lsnrctl80 stop
iniciando listener
em Windows ou UNIX: lsnrctl start se for Oracle 8.0: lsnrctl80 start
status do listener
em Windows ou UNIX: lsnrctl status se for Oracle 8.0: lsnrctl80 status
/* Esta aplicacao foi criada com o proposito totalmente DIDATICO, ou seja, para o aprendizado de aplicacoes web em PL/SQL. Trata-se de um sistema de consulta/cadastro e alteracao bem simples, envolvendo 3 tabelas: CIDADES, PFISICAS (das pessoas fisicas) e PJURIDICAS (das pessoas juridicas). Para o desenvolvimento de algo mais complexo basta adaptar a aplicacao
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 18 of 21
e adicionar rotinas na medida do possivel. Numa futura implementacao poderia existir a mesma aplicacao, porem com suporte a varios usuarios, ou seja, varias agendas de varios usuarios, cada um com sua area publica e privada e cada um com a sua senha.
Coloque o seu servidor web no ar (WebDB ou OAS) e chame o endereco: http://seu-site/sua-aplicacao/apw.inicio =========================================
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 19 of 21
for n in reverse 1..contador-1 loop dbms_output.put_line(initcap(tabela(n).ename)||' tem o cargo de '||lower(tabela(n).job)||'.'); end loop; end le_tabela; / ------------------------------------------------------------------create or replace procedure le_tabela2 as tabela pac_tabela.emp_tabela_type ; -- para referenciar linha: tabela(numero)
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 20 of 21
for n in reverse 1..tabela.count loop dbms_output.put_line(initcap(tabela(n).ename)||' tem o cargo de '||lower(tabela(n).job)||'.'); end loop; end le_tabela3; / ------------------------------------------------------------------Esse foi o resultado no sqlplus: ------------------------------------------------------------------SQL> set serverout on SQL> exec le_tabela Executando a rotina le_tabela... Miller tem o cargo de clerk. Ford tem o cargo de analyst. James tem o cargo de clerk. Adams tem o cargo de clerk. Turner tem o cargo de salesman. King tem o cargo de president. Scott tem o cargo de analyst. Clark tem o cargo de manager. Blake tem o cargo de manager. Martin tem o cargo de salesman. Jones tem o cargo de manager. Ward tem o cargo de salesman. Allen tem o cargo de salesman. Smith tem o cargo de clerk. PL/SQL procedure successfully completed SQL> exec le_tabela2 Executando a rotina le_tabela2... Executando a rotina le_tabela3... Miller tem o cargo de clerk. Ford tem o cargo de analyst. James tem o cargo de clerk. Adams tem o cargo de clerk. Turner tem o cargo de salesman. King tem o cargo de president. Scott tem o cargo de analyst. Clark tem o cargo de manager.
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011
Page 21 of 21
Colocar o IAS no ar
No NT: inicialize o servico iAS (Apache) No unix: logue-se com o usurio que instalou o produto e digite: inicialize o script: startJserv.sh
HOME
Redirecinar: http://www.fontesbrasil.com
http://www.fontesbrasil.com/dicas_oracle.htm
26/8/2011