1. SQL / Говнокод #6622

    −861

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    /* Formatted on 2011/05/11 16:11 (Formatter Plus v4.8.7) */
    CREATE SEQUENCE tmpseq
    /
    CREATE TABLE tmpt(a NUMBER, b NUMBER)
    /
    CREATE OR REPLACE TRIGGER tmpt_bi
       BEFORE INSERT
       ON tmpt
       REFERENCING NEW AS NEW OLD AS OLD
       FOR EACH ROW
    BEGIN
       IF :NEW.a IS NULL
       THEN
          SELECT tmpseq.NEXTVAL
            INTO :NEW.a
            FROM DUAL;
       END IF;
    END;
    /
    DECLARE
       l_a   tmpt.a%TYPE;
       n     NUMBER;
    BEGIN
       FOR n IN 5 .. 8
       LOOP
          INSERT INTO tmpt
                      (b
                      )
               VALUES (n
                      )
            RETURNING a
                 INTO l_a;
    
          DBMS_OUTPUT.put_line (l_a);
       END LOOP;
    END;
    /
    select * from tmpt
    /
    DROP TRIGGER tmpt_bi
    /
    DROP TABLE tmpt
    /
    DROP SEQUENCE tmpseq
    /
    COMMIT

    иногда я не верю мануалам и проверяю себя небольшими кусочками кода. на этот раз я проверил конструкцию returning

    Запостил: RomaShka, 11 Мая 2011

    Комментарии (3) RSS

    Добавить комментарий