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

    −114

    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
    47. 47
    48. 48
    49. 49
    50. 50
    DECLARE 
      CURSOR get_col1 IS
        SELECT DISTINCT 
    	a.constraint_name, 
      a.constraint_type,
      a.table_name,
      a.r_constraint_name,
      b.column_name
        FROM all_constraints a, all_cons_columns b
        WHERE a.table_name = b.table_name
      AND a.constraint_type in ('P', 'R')
      AND a.constraint_name = b.constraint_name
      --AND rownum < 20
        ORDER by 1;
      
      CURSOR get_col2 IS
        SELECT table_name, column_name 
        FROM all_cons_columns
        WHERE constraint_type = 'R';
        
    BEGIN
      dbms_output.ENABLE;
      dbms_output.put_line(rpad('Имя ограничения', 30)
                ||rpad('Тип', 5)
                ||rpad('Имя столбца', 20)
                ||rpad('Имя таблицы', 20)
                ||rpad('Имя таблицы', 20)
                ||rpad('Имя столбца', 20));
      dbms_output.put_line(rpad('-', 115, '-'));
      
      FOR main_col IN get_col1 LOOP
        dbms_output.put_line(rpad(to_char(main_col.constraint_name), 30)
          ||rpad(to_char(main_col.constraint_type), 5)
          ||rpad(to_char(main_col.column_name), 20)
          ||rpad(to_char(main_col.table_name), 20));
        
        /*IF (main_col.constraint_type = 'R') THEN
          dbms_output.put_line(lpad(rpad('Comment', 11), 37)||': '||main_col.comments);
        END IF;*/
        
        FOR sec_col IN get_col2 LOOP
          IF (main_col.constraint_type = 'R') THEN
            dbms_output.put_line(rpad('Index', 10)
            ||rpad('Index', 10)': '||ind_col.index_name);
          END IF;
        END LOOP;
        dbms_output.new_line();  
      END LOOP;
    END;
    /

    Запостил: kikis, 09 Декабря 2011

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

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