En alguna otra entrada hemos visto el uso de la llamada DBMS_METADATA.
Hoy vamos a ver las pequeñas peculiaridades que rodean a la variable para poder extraer el código de varias tablas.
La primera de las cosas a tener en cuenta es el formateo de la salida.
Hemos de prever el tamaño del código de las tablas, con lo que deberemos de formatear el sqlplus, para ellos pondremos la línea al máximo permitido y un valor muy alto en long
set head off set feedback off set pages 0 set linesize 32767 set long 2000000
Lo segundo que hemos de tener en cuenta es que , no vamos a tener ningún tipo de carácter que nos marce la separación entre las sentencias, con lo que deberemos de decirle a la librería dbms_metadata que nos marque el carácter. Ese parámetro es un parámetro de sesión con lo que deberemos de ejecutarlo en cada sesión en la que queramos obtener los datos.
exec dbms_metadata.set_transform_param (DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR',TRUE);
A partir de aquí ya podemos usar la llamada DBMS_METADATA.GET_DDL para obtener el código deseado :
select DBMS_METADATA.GET_DDL
('TABLE','NOMBRE_TABLA','OWNER')
from dual ;
Nota En el caso de las tablas podemos seleccionar algunas de las características que queremos mostrar (incluso transformarlas) como pueden ser las de almacenamiento o particionamiento con la opción SET_TRANSFORM_PARAM.
Mas información en lamágina de DBMS_METADATA de la documentación de Oracle.