Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE procALEX(table_name_in IN VARCHAR2) IS
- var1 VARCHAR2 (500 CHAR) ;
- var2 VARCHAR2 (500 CHAR) ;
- var3 VARCHAR2 (500 CHAR) ;
- --cur1
- 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
- FROM all_col_comments
- 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
- WHERE all_col_comments.TABLE_NAME LIKE UPPER(table_name_in) AND ALL_TAB_COLUMNS.TABLE_NAME LIKE UPPER(table_name_in)
- ;
- BEGIN
- DBMS_OUTPUT.ENABLE;
- dbms_output.put_line('===================================================================================================');
- dbms_output.put_line(' No Column name Attributes ');
- dbms_output.put_line(' ------ --------------- ----------------------------------------------------------------------');
- FOR index_cicla1 IN cur1 LOOP
- -- проверка условия на Number (NUMBER[(precision,scale)])
- IF (index_cicla1.DATA_TYPE = 'NUMBER') THEN
- BEGIN
- var1 :='';
- var1 := RPAD(index_cicla1."No.", 15, ' ');
- var1 := var1||RPAD(index_cicla1."Имя столбца", 25, ' ');
- IF (index_cicla1.DATA_SCALE = '0') THEN -- проверка на значения после запятой
- var1 := var1||'Type: '|| index_cicla1.DATA_TYPE || '(' || index_cicla1.DATA_PRECISION||')';
- ELSE
- var1 := var1||'Type: '|| index_cicla1.DATA_TYPE || '(' || index_cicla1.DATA_PRECISION||','||index_cicla1.DATA_SCALE||')';
- END IF;
- IF (index_cicla1.NULLABLE = 'N') THEN --if на NOT_NULL
- var1 :=var1|| ' NOT NULL';
- ELSE
- var1 :=var1;
- END IF;
- IF (index_cicla1.COMMENTS IS NOT NULL) THEN -- проверка условия на наличие comments
- var1 := var1||'
- '||RPAD(' ', 36, ' ') ||'Comment: '||'"'||index_cicla1.COMMENTS||'"';
- ELSE
- var1 := var1;
- END IF;
- Dbms_output.put_line(TO_CHAR(var1)); --вывод строк Number
- END;
- ELSIF (index_cicla1.data_type IN ('VARCHAR2','CHAR','VARCHAR')) THEN -- проверка условия на VARCHAR2 и CHAR
- BEGIN
- var2 :='';
- var2 := var2|| RPAD(index_cicla1."No.", 15, ' ');
- var2 := var2|| RPAD(index_cicla1."Имя столбца", 25, ' ');
- IF (index_cicla1.NULLABLE = 'N') THEN --if на NOT_NULL
- var2 :=var2 ||'Type: '|| index_cicla1.DATA_TYPE||'('|| index_cicla1.CHAR_LENGTH||') NOT NULL';
- ELSE
- var2 :=var2 ||'Type: '|| index_cicla1.DATA_TYPE||'('|| index_cicla1.CHAR_LENGTH||')';
- END IF;
- IF (index_cicla1.COMMENTS IS NOT NULL) THEN -- проверка условия на наличие comments
- var2 := var2||'
- '||RPAD(' ', 34, ' ') ||' Comment: '||'"'||index_cicla1.COMMENTS||'"';
- ELSE
- var2 := var2;
- END IF;
- Dbms_output.put_line(TO_CHAR(var2)); --вывод значений varchar2
- END;
- ELSIF (index_cicla1.data_type = 'DATE') THEN --проверка условия на DATE
- BEGIN
- var3:='';
- var3 := var3|| RPAD(index_cicla1."No.", 15, ' ');
- var3 := var3|| RPAD(index_cicla1."Имя столбца", 25, ' ');
- IF (index_cicla1.NULLABLE = 'N') THEN --if на NOT_NULL
- var3 :=var3 ||'Type: '|| index_cicla1.DATA_TYPE||' NOT NULL';
- ELSE
- var3 :=var3 ||'Type: '|| index_cicla1.DATA_TYPE;
- END IF;
- IF (index_cicla1.COMMENTS IS NOT NULL) THEN -- проверка условия на наличие comments
- var3 := var3||'
- '||RPAD(' ', 35, ' ') ||'Comment: '||'"'||index_cicla1.COMMENTS||'"';
- ELSE
- var3 := var3;
- END IF;
- Dbms_output.put_line(TO_CHAR(var3)); --вывод значений DATE
- END;
- END IF;
- -- index!=)
- 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
- dbms_output.put_line(RPAD(' ',40 ) || 'Index: "' || indexCursor.INDEX_NAME || '"');
- END LOOP;
- EXIT WHEN cur1%NOTFOUND;
- END LOOP;
- dbms_output.put_line('===================================================================================================');
- END procALEX;
Add Comment
Please, Sign In to add comment