{"id":999,"date":"2014-07-22T11:02:34","date_gmt":"2014-07-22T09:02:34","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=999"},"modified":"2014-07-22T11:02:34","modified_gmt":"2014-07-22T09:02:34","slug":"obtener-el-codigo-de-un-objeto-con-dbms_metadata-get_ddl","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/obtener-el-codigo-de-un-objeto-con-dbms_metadata-get_ddl\/","title":{"rendered":"Obtener el c\u00f3digo de un objeto con DBMS_METADATA.GET_DDL"},"content":{"rendered":"<p>En alguna otra entrada hemos visto el uso de la llamada DBMS_METADATA.<br \/>\nHoy vamos a ver las peque\u00f1as peculiaridades que rodean a la variable para poder extraer  el c\u00f3digo de varias tablas.<\/p>\n<p>La primera de las cosas a tener en cuenta es el formateo de la salida.<br \/>\nHemos de prever el tama\u00f1o del c\u00f3digo de las tablas, con lo que deberemos de formatear el sqlplus, para ellos pondremos la l\u00ednea al m\u00e1ximo permitido y un valor muy alto en <em>long<\/em><\/p>\n<pre>\r\nset head off\r\nset feedback off\r\nset pages 0\r\nset linesize 32767\r\nset long  2000000\r\n<\/pre>\n<p>Lo segundo que hemos de tener en cuenta es que , no vamos a tener ning\u00fan tipo de car\u00e1cter que nos marce la separaci\u00f3n entre las sentencias, con lo que deberemos de decirle a la librer\u00eda dbms_metadata que nos marque el car\u00e1cter. Ese par\u00e1metro es un par\u00e1metro de sesi\u00f3n con lo que deberemos de ejecutarlo en cada sesi\u00f3n en la que  queramos obtener los datos.<\/p>\n<pre>\r\nexec dbms_metadata.set_transform_param \r\n   (DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR',TRUE);\r\n<\/pre>\n<p>A partir de aqu\u00ed ya podemos  usar la llamada DBMS_METADATA.GET_DDL para obtener el c\u00f3digo deseado :<\/p>\n<pre>\r\nselect DBMS_METADATA.GET_DDL\r\n ('TABLE','NOMBRE_TABLA','OWNER') \r\n      from dual ;\r\n<\/pre>\n<p><\/em>Nota<\/em> En el caso de las tablas podemos seleccionar algunas de las caracter\u00edsticas que queremos mostrar (incluso transformarlas) como pueden ser las de almacenamiento o particionamiento con la opci\u00f3n <a href=\"http:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28419\/d_metada.htm#i1000135\">SET_TRANSFORM_PARAM<\/a>.<\/p>\n<p>Mas informaci\u00f3n en lam\u00e1gina de <a href=\"http:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28419\/d_metada.htm\">DBMS_METADATA<\/a> de la documentaci\u00f3n de Oracle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En alguna otra entrada hemos visto el uso de la llamada DBMS_METADATA. Hoy vamos a ver las peque\u00f1as peculiaridades que rodean a la variable para poder extraer el c\u00f3digo de varias tablas. La primera de las cosas a tener en &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/obtener-el-codigo-de-un-objeto-con-dbms_metadata-get_ddl\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,60,3],"tags":[105,176,177],"class_list":["post-999","post","type-post","status-publish","format-standard","hentry","category-11g","category-12c","category-tunning","tag-dbms_metadata","tag-dbms_metadata-get_ddl","tag-get_ddl"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=999"}],"version-history":[{"count":6,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/999\/revisions"}],"predecessor-version":[{"id":1005,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/999\/revisions\/1005"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=999"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}