Guest User

Untitled

a guest
Jan 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE PROCEDURE procALEX(table_name_in IN VARCHAR2) IS
  2. var1 VARCHAR2 (500 CHAR) ;
  3. var2 VARCHAR2 (500 CHAR) ;
  4. var3 VARCHAR2 (500 CHAR) ;
  5. --cur1
  6. CURSOR cur1 IS SELECT  (ROWNUM) "No." , (all_col_comments.COLUMN_NAME ) "Имя столбца",  ALL_TAB_COLUMNS.DATA_TYPE , ALL_TAB_COLUMNS.NULLABLE, all_col_comments.CoMMENTS , ALL_TAB_COLUMNS.DATA_SCALE, ALL_TAB_COLUMNS.DATA_LENGTH, ALL_TAB_COLUMNS.DATA_PRECISION, ALL_TAB_COLUMNS.CHAR_LENGTH, ALL_TAB_COLUMNS.COLUMN_NAME
  7.  
  8. FROM  all_col_comments
  9.  
  10. JOIN  ALL_TAB_COLUMNS ON all_col_comments.TABLE_NAME = ALL_TAB_COLUMNS.TABLE_NAME  AND all_col_comments.COLUMN_NAME = ALL_TAB_COLUMNS.COLUMN_NAME
  11.  
  12. WHERE all_col_comments.TABLE_NAME LIKE UPPER(table_name_in)  AND ALL_TAB_COLUMNS.TABLE_NAME LIKE UPPER(table_name_in)
  13. ;
  14. BEGIN
  15.  DBMS_OUTPUT.ENABLE;
  16.  dbms_output.put_line('===================================================================================================');
  17.  dbms_output.put_line('  No         Column name                      Attributes    ');
  18.  dbms_output.put_line(' ------     ---------------  ----------------------------------------------------------------------');
  19.  
  20. FOR index_cicla1 IN cur1 LOOP
  21. -- проверка условия на Number (NUMBER[(precision,scale)])
  22. IF (index_cicla1.DATA_TYPE = 'NUMBER') THEN
  23.   BEGIN
  24.   var1 :='';
  25.   var1 := RPAD(index_cicla1."No.", 15, ' ');
  26.   var1 := var1||RPAD(index_cicla1."Имя столбца", 25, ' ');
  27.   IF (index_cicla1.DATA_SCALE = '0') THEN -- проверка на значения после запятой
  28.   var1 := var1||'Type: '|| index_cicla1.DATA_TYPE || '(' || index_cicla1.DATA_PRECISION||')';
  29.   ELSE
  30.   var1 := var1||'Type: '|| index_cicla1.DATA_TYPE || '(' || index_cicla1.DATA_PRECISION||','||index_cicla1.DATA_SCALE||')';
  31.   END IF;
  32.  
  33.   IF (index_cicla1.NULLABLE = 'N') THEN --if на NOT_NULL
  34.   var1 :=var1|| ' NOT NULL';
  35.  
  36.   ELSE
  37.   var1 :=var1;
  38.   END IF;
  39.  
  40.  
  41.   IF (index_cicla1.COMMENTS IS NOT NULL) THEN -- проверка условия на наличие comments
  42.     var1 := var1||'
  43.    '||RPAD(' ', 36, ' ') ||'Comment: '||'"'||index_cicla1.COMMENTS||'"';
  44.   ELSE
  45.     var1 := var1;
  46.    END IF;
  47.  
  48.   Dbms_output.put_line(TO_CHAR(var1)); --вывод строк Number
  49.   END;
  50.  
  51. ELSIF (index_cicla1.data_type IN ('VARCHAR2','CHAR','VARCHAR')) THEN    -- проверка условия на VARCHAR2 и CHAR
  52.        BEGIN
  53.       var2 :='';
  54.       var2 := var2|| RPAD(index_cicla1."No.", 15, ' ');
  55.       var2 := var2|| RPAD(index_cicla1."Имя столбца", 25, ' ');
  56.     IF  (index_cicla1.NULLABLE = 'N') THEN --if на NOT_NULL
  57.      var2 :=var2 ||'Type: '|| index_cicla1.DATA_TYPE||'('|| index_cicla1.CHAR_LENGTH||') NOT NULL';
  58.     ELSE
  59.       var2 :=var2 ||'Type: '|| index_cicla1.DATA_TYPE||'('|| index_cicla1.CHAR_LENGTH||')';
  60.     END IF;
  61.    
  62.       IF (index_cicla1.COMMENTS IS NOT NULL) THEN -- проверка условия на наличие comments
  63.     var2 := var2||'
  64.     '||RPAD(' ', 34, ' ') ||' Comment: '||'"'||index_cicla1.COMMENTS||'"';
  65.   ELSE
  66.     var2 := var2;
  67.    END IF;
  68.         Dbms_output.put_line(TO_CHAR(var2)); --вывод значений varchar2
  69.         END;
  70. ELSIF (index_cicla1.data_type = 'DATE') THEN --проверка условия на DATE
  71.        BEGIN
  72.         var3:='';
  73.         var3 := var3|| RPAD(index_cicla1."No.", 15, ' ');
  74.         var3 := var3|| RPAD(index_cicla1."Имя столбца", 25, ' ');
  75.              IF  (index_cicla1.NULLABLE = 'N') THEN --if на NOT_NULL
  76.              var3 :=var3 ||'Type: '|| index_cicla1.DATA_TYPE||' NOT NULL';
  77.              ELSE
  78.              var3 :=var3 ||'Type: '|| index_cicla1.DATA_TYPE;
  79.              END IF;
  80.      
  81.         IF (index_cicla1.COMMENTS IS NOT NULL) THEN -- проверка условия на наличие comments
  82.     var3 := var3||'
  83.     '||RPAD(' ', 35, ' ') ||'Comment: '||'"'||index_cicla1.COMMENTS||'"';
  84.   ELSE
  85.     var3 := var3;
  86.    END IF;
  87.  
  88.       Dbms_output.put_line(TO_CHAR(var3)); --вывод значений DATE
  89.       END;
  90.    
  91. END IF;
  92. -- index!=)
  93.  
  94.       FOR indexCursor IN (SELECT INDEX_NAME FROM ALL_IND_COLUMNS WHERE COLUMN_NAME = index_cicla1.COLUMN_NAME AND UPPER(table_name_in) = TABLE_NAME) LOOP
  95.         dbms_output.put_line(RPAD(' ',40 ) || 'Index: "' || indexCursor.INDEX_NAME || '"');
  96.       END LOOP;
  97.  
  98.  
  99.  
  100. EXIT WHEN cur1%NOTFOUND;
  101. END LOOP;
  102.  
  103. dbms_output.put_line('===================================================================================================');
  104. END procALEX;
Add Comment
Please, Sign In to add comment