Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.22 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE aanpassing_locatie
  2. AS
  3. TYPE type_rec_uitv IS RECORD
  4. (cursus uitvoeringen.cursus%TYPE,
  5.  begindatum uitvoeringen.begindatum%TYPE,
  6. Locatie uitvoeringen.locatie%TYPE);
  7. TYPE type_tab_uitv IS TABLE OF type_rec_uitv
  8. INDEX BY PLS_INTEGER;
  9. TYPE type_tab_cursus IS TABLE OF uitvoeringen.cursus%TYPE
  10. INDEX BY PLS_INTEGER;
  11. TYPE type_tab_begindatum IS TABLE OF uitvoeringen.begindatum%TYPE
  12. INDEX BY PLS_INTEGER;
  13. TYPE type_tab_locatie IS TABLE OF uitvoeringen.locatie%TYPE
  14. INDEX BY PLS_INTEGER;
  15. t_uitv          type_tab_uitv;
  16. t_cursus        type_tab_cursus;
  17. t_begindatum    type_tab_begindatum;
  18. t_locatie       type_tab_locatie;
  19. BEGIN
  20. SELECT cursus,begindatum,locatie BULK COLLECT INTO t_uitv
  21. FROM  uitvoeringen
  22. WHERE (cursus,begindatum) IN (SELECT cursus,begindatum
  23.                               FROM inschrijvingen
  24.                               GROUP BY cursus,begindatum
  25.                               HAVING COUNT(*)>4);
  26. FOR i IN 1..t_uitv.LAST
  27. LOOP
  28. T_locatie(i):= 'ANTWERPEN';
  29. t_cursus(i):=t_uitv(i).cursus;
  30. t_begindatum(i):=t_uitv(i).begindatum;
  31. END LOOP;
  32. FORALL i IN 1..t_uitv.LAST
  33. UPDATE uitvoeringen
  34. SET locatie= t_locatie(i)
  35. WHERE cursus=t_cursus(i)
  36. AND begindatum=t_begindatum(i);
  37. END aanpassing_locatie;
  38.  
  39.  
  40. Oplossing b :
  41. CREATE OR REPLACE PROCEDURE aanpassing_locatie
  42. AS
  43. TYPE type_tab_uitv IS TABLE OF uitvoeringen%ROWTYPE
  44. INDEX BY PLS_INTEGER;
  45. TYPE type_tab_cursus IS TABLE OF uitvoeringen.cursus%TYPE
  46. INDEX BY PLS_INTEGER;
  47. TYPE type_tab_begindatum IS TABLE OF uitvoeringen.begindatum%TYPE
  48. INDEX BY PLS_INTEGER;
  49. t_uitv          type_tab_uitv;
  50. t_cursus        type_tab_cursus;
  51. t_begindatum    type_tab_begindatum;
  52. BEGIN
  53. SELECT * BULK COLLECT INTO t_uitv
  54. FROM  uitvoeringen
  55. WHERE (cursus,begindatum) IN (SELECT cursus,begindatum
  56.                               FROM inschrijvingen
  57.                               GROUP BY cursus,begindatum
  58.                               HAVING COUNT(*)>4);
  59. FOR i IN 1..t_uitv.LAST
  60. LOOP
  61. t_uitv(i).locatie:= 'ANTWERPEN';
  62. t_cursus(i):=t_uitv(i).cursus;
  63. t_begindatum(i):=t_uitv(i).begindatum;
  64. END LOOP;
  65. FORALL i IN 1..t_uitv.LAST
  66. UPDATE uitvoeringen
  67. SET ROW= t_uitv(i)
  68. WHERE cursus=t_cursus(i)
  69. AND begindatum=t_begindatum(i);
  70. END aanpassing_locatie;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement