Показаны сообщения с ярлыком dbms_metadata. Показать все сообщения
Показаны сообщения с ярлыком dbms_metadata. Показать все сообщения

среда, 17 марта 2010 г.

Получение DDL скрипта объекта

Иногда для каких-то целей может потребоваться скрипт создания объекта (например, CONSTRAINT, TABLE, INDEX и т.д).
Вот один из вариантов как это сделать:
declare
   v_text varchar2(32767);
   procedure print(p_msg in varchar2) is
      v_msg varchar2(32767);
   begin
      v_msg := p_msg;
      if length(v_msg) <= 255 then
         dbms_output.put_line(v_msg);
      else
         while length(v_msg) > 0 loop
            dbms_output.put_line(substr(v_msg, 1, 255));
            v_msg := substr(v_msg, 256);
         end loop;
      end if;
   end print;
begin
   v_text := dbms_lob.substr(lob_loc => DBMS_METADATA.GET_DDL('TABLE',
                                                              'EMPLOYEE',
                                                              'SCOTT'),
                             amount  => 32767,
                             offset  => 1);
   print(v_text);
end;