May 09
Una de las cosas que suelo necesitar ver de una tabla es, a parte de sus comentarios, las tablas a donde apuntan sus claves foráneas. Y también cual es la clave primaria. Este script permite ver todo eso. Usa vistas user_, pero es fácilmente modificable para utilizar vistas all_. Habrá que pedir entonces también como parámetro el propietario del objeto.
Como veréis, a la izquierda de la clave primaria aparece un asterisco. Después de la lista de columnas hay una sección para las claves foráneas donde se detalla la tabla a la que hace referencia y las columnas de la tabla que estamos describiendo que están involucradas en la clave ajena.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | -------------- -- Sección Set -------------- SET LINES 100 SET HEADING ON SET VERIFY OFF ------------------------- -- Definición de columnas ------------------------- COLUMN CLAVE_PRIMARIA FORMAT A1 COLUMN COLUMN_NAME FORMAT A20 COLUMN TIPO FORMAT A15 COLUMN DEFECTO FORMAT A15 COLUMN COMENTARIO FORMAT A43 COLUMN COMMENTS FORMAT A69 COLUMN TABLA_FORANEA FORMAT A20 ------------- -- Parámetros ------------- ACCEPT tabla PROMPT "Escribe el nombre de la tabla: " PROMPT . ---------- -- Selects ---------- PROMPT TABLA SELECT TABLE_NAME, COMMENTS FROM USER_TAB_COMMENTS WHERE TABLE_NAME = UPPER( '&&tabla' ) / SELECT P.PK CLAVE_PRIMARIA, M.COLUMN_NAME, M.DATA_TYPE || DECODE( M.DATA_TYPE, /*************************************/ 'DATE', NULL, -- Poner aquí los tipos 'LONG', NULL, -- de varible para los 'BLOB', NULL, -- que no queramos ver 'CLOB', NULL, -- la precisión /*************************************/ '(' || TO_CHAR( NVL( M.DATA_PRECISION, M.DATA_LENGTH))|| DECODE( M.DATA_SCALE, NULL, NULL, ',' || TO_CHAR( M.DATA_SCALE ) ) || ')' ) TIPO, M.NULLABLE, M.DATA_DEFAULT DEFECTO, C.COMMENTS COMENTARIO FROM ( SELECT N.TABLE_NAME, L.COLUMN_NAME, '*' PK FROM USER_CONS_COLUMNS L, USER_CONSTRAINTS N WHERE L.CONSTRAINT_NAME = N.CONSTRAINT_NAME AND N.TABLE_NAME = UPPER( '&&tabla' ) AND N.CONSTRAINT_TYPE = 'P' ) P, -- Clave primaria USER_TAB_COLUMNS M, USER_COL_COMMENTS C WHERE M.TABLE_NAME = C.TABLE_NAME AND M.COLUMN_NAME = C.COLUMN_NAME AND M.TABLE_NAME = P.TABLE_NAME (+) AND M.COLUMN_NAME = P.COLUMN_NAME (+) AND M.TABLE_NAME = UPPER( '&&tabla' ) ORDER BY M.COLUMN_ID / PROMPT CLAVE FORÁNEA BREAK ON TABLA_FORANEA SELECT A.CONSTRAINT_NAME, B.TABLE_NAME TABLA_FORANEA, C.COLUMN_NAME FROM USER_CONS_COLUMNS C, USER_CONSTRAINTS A, USER_CONSTRAINTS B WHERE A.R_CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND A.TABLE_NAME = UPPER( '&&tabla' ) AND A.CONSTRAINT_TYPE = 'R' ORDER BY A.CONSTRAINT_NAME, B.TABLE_NAME, C.POSITION / SET VERIFY ON |
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution 3.0 License.