Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. --ZAD1
  2. SET SERVEROUTPUT ON;
  3. CREATE OR REPLACE FUNCTION SREDNIA
  4. RETURN NUMBER
  5. IS
  6. SR NUMBER;
  7. BEGIN
  8. DBMS_OUTPUT.ENABLE;
  9. SELECT AVG(WYNAGRODZENIE)
  10. INTO SR
  11. FROM LEKARZE;
  12. RETURN SR;
  13. END;
  14. /
  15. CREATE OR REPLACE PROCEDURE drukuj_srednia
  16. AS
  17. BEGIN
  18. DBMS_OUTPUT.PUT_LINE('Srednia = ' || srednia);
  19. END;
  20. /
  21. --EXECUTE drukuj_srednia;
  22. SELECT * FROM LEKARZE;
  23. CREATE OR REPLACE FUNCTION SREDNIA_FOR
  24. RETURN NUMBER
  25. IS
  26. SR NUMBER:=0;
  27. ILE NUMBER:=0;
  28. WY NUMBER;
  29. BEGIN
  30. SELECT COUNT(*)
  31. INTO ILE
  32. FROM LEKARZE;
  33. FOR I IN 1 .. ILE
  34. LOOP
  35. SELECT WYNAGRODZENIE
  36. INTO WY
  37. FROM LEKARZE
  38. WHERE LEKARZ_ID=I;
  39. SR :=SR+WY;
  40.  
  41. END LOOP;
  42. SR:=SR/ILE;
  43. RETURN SR;
  44. END;
  45. /
  46. VARIABLE FOR_SREDNIA NUMBER;
  47. EXECUTE :FOR_SREDNIA :=SREDNIA_FOR()
  48. PRINT FOR_SREDNIA
  49.  
  50. --while
  51.  
  52. CREATE OR REPLACE FUNCTION SREDNIA_WHILE
  53. RETURN NUMBER
  54. IS
  55. SR NUMBER:=0;
  56. ILE NUMBER:=0;
  57. I NUMBER:=1;
  58. WY NUMBER;
  59. BEGIN
  60. SELECT COUNT(*)
  61. INTO ILE
  62. FROM LEKARZE;
  63. WHILE I<=ILE
  64. LOOP
  65. SELECT WYNAGRODZENIE
  66. INTO WY
  67. FROM LEKARZE
  68. WHERE LEKARZ_ID=I;
  69. SR :=SR+WY;
  70. I:=I+1;
  71. END LOOP;
  72. SR:=SR/ILE;
  73. RETURN SR;
  74. END;
  75. /
  76. VARIABLE WHILE_SREDNIA NUMBER;
  77. EXECUTE :WHILE_SREDNIA :=SREDNIA_WHILE()
  78. PRINT WHILE_SREDNIA
  79.  
  80. --LOOP
  81. CREATE OR REPLACE FUNCTION SREDNIA_LOOP
  82. RETURN NUMBER
  83. IS
  84. SR NUMBER:=0;
  85. ILE NUMBER:=0;
  86. I NUMBER:=1;
  87. WY NUMBER;
  88. BEGIN
  89. SELECT COUNT(*)
  90. INTO ILE
  91. FROM LEKARZE;
  92. LOOP
  93. exit when i>ile;
  94. SELECT WYNAGRODZENIE
  95. INTO WY
  96. FROM LEKARZE
  97. WHERE LEKARZ_ID=I;
  98. SR :=SR+WY;
  99. I:=I+1;
  100. END LOOP;
  101. SR:=SR/ILE;
  102. RETURN SR;
  103. END;
  104. /
  105. VARIABLE LOOP_SREDNIA NUMBER;
  106. EXECUTE :LOOP_SREDNIA :=SREDNIA_LOOP()
  107. PRINT LOOP_SREDNIA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement