Advertisement
luizlink64

prova lab bd

Jun 19th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. CREATE USER dir_financeiro IDENTIFIED BY diretor
  2. DEFAULT TABLESPACE users
  3. QUOTA UNLIMITED ON users;
  4.  
  5. CREATE ROLE SELECT_AUDITORIA;
  6.  
  7. GRANT CREATE SESSION TO dir_financeiro;
  8. GRANT CREATE TABLE TO dir_financeiro;
  9. GRANT CREATE SEQUENCE TO dir_financeiro;
  10. GRANT CREATE TRIGGER TO dir_financeiro;
  11. GRANT SELECT ON DUAL TO dir_financeiro;
  12.  
  13. CREATE table "TB_FILIAL" (
  14. "CD_FILIAL" NUMBER NOT NULL,
  15. "NM_FILIAL" VARCHAR2(100) NOT NULL,
  16. constraint "TB_FILIAL_PK" primary key ("CD_FILIAL")
  17. );
  18.  
  19. GRANT SELECT, INSERT ON dir_financeiro.TB_FILIAL TO dir_financeiro;
  20.  
  21. INSERT INTO TB_FILIAL VALUES (1, 'FILIAL 1');
  22. INSERT INTO TB_FILIAL VALUES (2, 'FILIAL 2');
  23. INSERT INTO TB_FILIAL VALUES (2, 'FILIAL 3');
  24.  
  25.  
  26. CREATE TABLE "TB_TRANSACAO" (
  27. "CD_TRANSACAO" NUMBER NOT NULL,
  28. "CD_FILIAL" NUMBER NOT NULL,
  29. "VL_TRANSACAO" NUMBER(10,2) NOT NULL,
  30. CONSTRAINT "TB_TRANSACAO_PK" PRIMARY KEY ("CD_TRANSACAO"),
  31. CONSTRAINT "TB_TRANSACAO_FILIAL_FK" FOREIGN KEY ("CD_FILIAL") REFERENCES "TB_FILIAL" ("CD_FILIAL")
  32. );
  33.  
  34. CREATE TABLE "TB_AUDITORIA" (
  35. "CD_AUDITORIA" NUMBER NOT NULL,
  36. "CD_FILIAL" NUMBER NOT NULL,
  37. "VL_ALTERADO" NUMBER(10,2),
  38. "VL_ANTES" NUMBER(10,2) NOT NULL,
  39. "VL_DEPOIS" NUMBER(10,2) NOT NULL,
  40. "DT_AUDITORIA" DATE,
  41. CONSTRAINT "TB_AUDITORIA_PK" PRIMARY KEY ("CD_AUDITORIA"),
  42. CONSTRAINT "TB_AUDITORIA_FILIAL_FK" FOREIGN KEY ("CD_FILIAL") REFERENCES "TB_FILIAL" ("CD_FILIAL")
  43. );
  44.  
  45. GRANT SELECT ON dir_financeiro.TB_AUDITORIA TO SELECT_AUDITORIA;
  46. GRANT SELECT_AUDITORIA TO dir_financeiro;
  47.  
  48. CREATE SEQUENCE SEQ_AUDITORIA
  49. START WITH 1
  50. INCREMENT BY 1
  51. NOCYCLE;
  52.  
  53. CREATE OR REPLACE TRIGGER AUTOINC_AUDITORIA
  54. BEFORE INSERT ON TB_AUDITORIA
  55. FOR EACH ROW
  56. BEGIN
  57. SELECT SEQ_AUDITORIA.nextval
  58. INTO :new.CD_AUDITORIA
  59. FROM dual;
  60. END;
  61.  
  62. CREATE OR REPLACE TRIGGER "AUD_TRANSACAO"
  63. BEFORE UPDATE ON TB_TRANSACAO
  64. FOR EACH ROW
  65. BEGIN
  66. INSERT INTO TB_AUDITORIA
  67. (CD_AUDITORIA, CD_FILIAL, VL_ALTERADO, VL_ANTES, VL_DEPOIS, DT_AUDITORIA)
  68. VALUES ((SELECT SEQ_AUDITORIA.nextval FROM DUAL), OLD.CD_FILIAL, (NEW.VL_TRANSACAO - OLD.VL_TRANSACAO), OLD.VL_TRANSACAO, NEW.VL_TRANSACAO, SYSDATE);
  69. END;
  70.  
  71. CREATE OR REPLACE PROCEDURE "MAIOR_MOVIMENTACAO" IS
  72. DECLARE
  73. V_CD_FILIAL NUMBER;
  74. V_VL_TRANSACAO NUMBER(10,2);
  75. CURSOR CONTADOR IS
  76. SELECT CD_FILIAL, VL_TRANSACAO FROM TB_TRANSACAO ORDER BY VL_TRANSICAO DESC;
  77. BEGIN
  78. OPEN CONTADOR;
  79. LOOP
  80. FETCH CONTADOR INTO V_CD_FILIAL, V_VL_TRANSACAO;
  81. DBMS_OUTPUT.PUT_LINE(V_CD_FILIAL);
  82. DBMS_OUTPUT.PUT_LINE((SELECT NM_FILIAL FROM TB_FILIAL WHERE CD_FILIAL = V_CD_FILIAL));
  83. DBMS_OUTPUT.PUT_LINE(V_VL_TRANSACAO);
  84. DBMS_OUTPUT.PUT_LINE('----------------');
  85. EXIT WHEN CONTADOR%ROWCOUNT > 3;
  86. END LOOP;
  87. CLOSE CONTADOR;
  88. END;
  89.  
  90.  
  91. GRANT SELECT, INSERT ON dir_financeiro.TB_TRANSACAO to dir_financeiro;
  92.  
  93. INSERT INTO TB_TRANSACAO VALUES (1, 1, 1000.50);
  94. INSERT INTO TB_TRANSACAO VALUES (2, 2, 800.79);
  95. INSERT INTO TB_TRANSACAO VALUES (3, 3, 500);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement