3

Oracle のパッケージをDDL使用してデータベース サーバーに配置できるように、複数のテーブルが必要です。UTL

問題は次のとおりです。

select dbms_metadata.get_ddl('TABLE','Table_name','Schema_Name') 
  from dual; 

CLOBbeforeを含む出力が得られますCREATE。お気に入り

"(CLOB) 
  CREATE TABLE "SCHEMA"."TABLE_NAME" 
   (TABLE_COLUMNS.....) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "INTF_DATA01" ;"

私が欲しいのは、などのパラメータの有無にかかわらず上記DDLです... ETC ..CLOBSEGMENT CREATIONPCTFREE

アドバイスいただければ幸いです。

4

3 に答える 3

7

DBMS_METADATA.SET_TRANSFORM_PARAMメソッドを使用して、生成されたDDLに含まれる句を制御できます。

たとえば、SEGMENTのものを除外するには、これを実行します

exec dbms_metadata.set_transform_param
   (dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES',false);

get_ddl()通話を実行する前に。

パッケージのドキュメントには、使用可能なすべての変換パラメータがリストされています。詳細をご覧ください


Alexは正しいと思います。先頭の「(CLOB)」は、クライアントが出力の前に追加しているものです。しかし、それは本物であり、それを取り除くアーティファクトは単純な文字列操作ではありませんでした。

substr(your_string, 7) 
于 2013-01-30T13:41:46.070 に答える
1

get_ddlCLOB を返します。文字型にキャストすると、ライブラリは (CLOB) を追加しません。

select to_char(dbms_metadata.get_ddl('TABLE','Table_name','Schema_Name'))
    from dual; 
于 2015-03-28T08:56:13.163 に答える