Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.37 KB | None | 0 0
  1. CREATE TABLE lottorad(
  2. nr NUMBER(6));
  3. CREATE TABLE lottofacit(
  4. nr NUMBER(6));
  5. INSERT INTO lottofacit VALUES(3);
  6. INSERT INTO lottofacit VALUES(7);
  7. INSERT INTO lottofacit VALUES(11);
  8. INSERT INTO lottofacit VALUES(35);
  9. INSERT INTO lottofacit VALUES(12);
  10. INSERT INTO lottofacit VALUES(5);
  11. INSERT INTO lottofacit VALUES(24);
  12. COMMIT;
  13.  
  14. SELECT *
  15. FROM lottofacit;
  16.  
  17. ---------- Package lotto -----------------
  18. CREATE OR REPLACE PACKAGE lotto
  19. AS    
  20.     PROCEDURE clear_table;
  21.     PROCEDURE skapaLottoRad;
  22.     FUNCTION skapaNyttLottoNr RETURN NUMBER;
  23.     FUNCTION get_speladRad RETURN TYPE;
  24.     TYPE rc IS REF CURSOR;
  25.    
  26. END;
  27. /
  28.  
  29.  
  30. ----- Skapar Package Body -----
  31.  
  32. CREATE OR REPLACE PACKAGE BODY lotto
  33. AS
  34.     ------------Slumpar heltal (1-35)--------------
  35.     FUNCTION skapaNyttLottoNr
  36.     RETURN NUMBER
  37.     AS  
  38.     lottoNr NUMBER(2);  
  39.     BEGIN
  40.         SELECT ROUND(DBMS_RANDOM.VALUE(1,35),0)
  41.         INTO lottoNr
  42.         FROM dual;
  43.         RETURN lottoNr;
  44.     END skapaNyttLottoNr;
  45.    
  46.    
  47.     ------------Hämtar spelad rad och returnerar en cursor--------------
  48.     FUNCTION get_speladRad
  49.         RETURN lotto.rc
  50.         AS
  51.         x lotto.rc;
  52.        
  53.         BEGIN
  54.         OPEN x FOR
  55.             SELECT nr
  56.             FROM lottorad;
  57.             RETURN x;
  58.     END get_speladRad;
  59.        
  60.    
  61.     ------------Tömmer lottorad-------------------------
  62.     PROCEDURE clear_table
  63.     AS
  64.     v_nr NUMBER;
  65.  
  66.     BEGIN
  67.         SELECT COUNT(*)
  68.         INTO v_nr
  69.         FROM lottorad;
  70.    
  71.         IF v_nr != 0
  72.            THEN DELETE FROM lottorad;
  73.         END IF;
  74.     END clear_table;
  75.    
  76.    
  77.     ------------Procedur skapaLottoRad------------------
  78.     PROCEDURE skapaLottoRad
  79.     AS
  80.     v_lottoNr lottorad.nr%TYPE;
  81.     v_count NUMBER;
  82.     v_nr NUMBER;
  83.     v_tempNr NUMBER;
  84.  
  85.     BEGIN
  86.         v_count := 0;
  87.    
  88.         WHILE v_count < 7
  89.         LOOP
  90.             v_lottoNr := skapaNyttLottoNr;
  91.             SELECT COUNT(nr)
  92.             INTO v_tempNr
  93.             FROM lottorad
  94.             WHERE nr = v_lottoNr;
  95.             IF v_tempNR <= 0 THEN
  96.                 INSERT INTO lottorad(nr)
  97.                 VALUES(v_lottoNr);
  98.                
  99.                 v_count := v_count + 1;
  100.             END IF;
  101.         END LOOP;
  102.     END;
  103. END lotto;
  104. /
  105.  
  106. EXEC lotto.clear_table;
  107. EXEC lotto.skapaLottoRad;
  108.  
  109. SELECT *
  110. FROM lottorad;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement