Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. SET SERVEROUTPUT ON
  2.  
  3. -- ////////////////////////////////////////////
  4. -- Exemplu
  5. -- ////////////////////////////////////////////
  6.  
  7. CREATE OR REPLACE PACKAGE pack_cur
  8. IS
  9. CURSOR c1 IS SELECT empno FROM emp ORDER BY empno desc;
  10. PROCEDURE proc1_3rows;
  11. END pack_cur;
  12.  
  13. CREATE OR REPLACE PACKAGE BODY pack_cur
  14. IS
  15. v_empno NUMBER;
  16. PROCEDURE proc1_3rows
  17. IS
  18. BEGIN
  19. OPEN c1;
  20. LOOP
  21. FETCH c1 INTO v_empno;
  22. dbms_output.put_line('Id: ' || (v_empno));
  23. EXIT WHEN c1%ROWCOUNT>=3;
  24. END LOOP;
  25. CLOSE c1;
  26. END proc1_3rows;
  27. END pack_cur;
  28.  
  29. EXECUTE pack_cur.proc1_3rows;
  30.  
  31. -- ////////////////////////////////////////////
  32. -- Problema 1
  33. -- ////////////////////////////////////////////
  34.  
  35. CREATE OR REPLACE PACKAGE PROD_PACK
  36. IS
  37. PROCEDURE ADD_PROD(ProductId IN PRODUCT.PRODID%TYPE);
  38. PROCEDURE UPD_PROD(ProductId IN PRODUCT.PRODID%TYPE);
  39. PROCEDURE DEL_PROD(ProductId IN PRODUCT.PRODID%TYPE);
  40. END PROD_PACK;
  41.  
  42. CREATE OR REPLACE PACKAGE BODY PROD_PACK
  43. IS
  44. -- ADD_PROD
  45. PROCEDURE ADD_PROD(ProductId IN PRODUCT.PRODID%TYPE)
  46. AS
  47. BEGIN
  48. INSERT INTO PRODUCT VALUES(ProductId, 'new product');
  49. EXCEPTION
  50. WHEN DUP_VAL_ON_INDEX THEN dbms_output.put_line('ID-ul exista deja');
  51. END ADD_PROD;
  52.  
  53. -- UPD_PROD
  54. PROCEDURE UPD_PROD(ProductId IN PRODUCT.PRODID%TYPE)
  55. AS
  56. aux PRODUCT.DESCRIP%TYPE;
  57. BEGIN
  58. SELECT descrip
  59. INTO aux
  60. FROM PRODUCT
  61. WHERE prodid = ProductId;
  62.  
  63. UPDATE PRODUCT
  64. SET descrip = 'new description'
  65. WHERE prodid = ProductId;
  66. EXCEPTION
  67. WHEN NO_DATA_FOUND THEN
  68. dbms_output.put_line('Nu exista un produs cu id-ul specificat!');
  69. END UPD_PROD;
  70.  
  71. -- DEL_PROD
  72. PROCEDURE DEL_PROD(ProductId IN PRODUCT.PRODID%TYPE)
  73. AS
  74. aux PRODUCT.DESCRIP%TYPE;
  75. BEGIN
  76. SELECT descrip
  77. INTO aux
  78. FROM PRODUCT
  79. WHERE prodid = ProductId;
  80.  
  81. DELETE FROM PRODUCT
  82. WHERE prodid = ProductId;
  83. EXCEPTION
  84. WHEN NO_DATA_FOUND THEN
  85. dbms_output.put_line('Nu exista un produs cu id-ul specificat!');
  86. END DEL_PROD;
  87. END PROD_PACK;
  88.  
  89. EXECUTE PROD_PACK.ADD_PROD(33);
  90. EXECUTE PROD_PACK.UPD_PROD(32);
  91. EXECUTE PROD_PACK.DEL_PROD(33);
  92.  
  93. SELECT * FROM PRODUCT;
  94.  
  95. -- ////////////////////////////////////////////
  96. -- Problema 2
  97. -- ////////////////////////////////////////////
  98.  
  99. CREATE OR REPLACE PACKAGE EMP_PACK
  100. IS
  101. PROCEDURE NEW_EMP(v_deptId IN emp.empno%TYPE);
  102. END EMP_PACK;
  103.  
  104. CREATE OR REPLACE PACKAGE BODY EMP_PACK
  105. IS
  106. FUNCTION VALID_DEPTNO(v_deptId IN emp.empno%TYPE, v_aux OUT NUMBER)
  107. RETURN NUMBER
  108. IS
  109. BEGIN
  110. SELECT COUNT(*)
  111. INTO v_aux
  112. FROM emp
  113. WHERE v_deptId=deptno;
  114. RETURN v_aux;
  115. END VALID_DEPTNO;
  116.  
  117. PROCEDURE NEW_EMP(v_deptId IN emp.empno%TYPE)
  118. IS
  119. v_aux NUMBER(2);
  120. BEGIN
  121. IF VALID_DEPTNO(v_deptId, v_aux) > 0 THEN
  122. INSERT INTO emp VALUES(7802, 'Joshua', 'SALESMAN', 7698, '17-NOV-80', 5000, null, v_deptId, null);
  123. ELSE
  124. dbms_output.put_line('Departamentul nu exista');
  125. END IF;
  126. END NEW_EMP;
  127. END EMP_PACK;
  128.  
  129. EXECUTE EMP_PACK.NEW_EMP(99);
  130. EXECUTE EMP_PACK.NEW_EMP(30);
  131. SELECT * FROM emp;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement