0

を実行すると、テーブルの DDL を取得できますDBMS_METADATA.get_DDL('Table','TABLENAME')。DDL でテーブルの名前を変更し、DDL を実行して、新しい名前と追加の列を持つ同等のテーブルを作成する方法を探しています。

DECLARE
stmt clob;
BEGIN
    SELECT dbms_metadata.get_ddl('TABLE', 'TABLE_NAME') into stmt FROM DUAL;
    /*change the name*/
    EXECUTE IMMEDIATE(stmt);
END;
4

3 に答える 3

4

これを試して :

CREATE TABLE XXX as SELECT * FROM YYY WHERE 1 = 0;
于 2013-01-27T09:54:49.387 に答える
2

これを試して:

DECLARE

 v_seq NUMBER;
 v_orig_ddl CLOB;

 BEGIN

 v_seq := 13;

 v_orig_ddl := dbms_metadata.get_ddl('TABLE','TEST', 'BI');

 -- Rename Production tables with extension
 EXECUTE IMMEDIATE 'ALTER TABLE BI.TEST RENAME TO TEST_' || TO_CHAR(v_seq);

 EXECUTE IMMEDIATE v_orig_ddl; 

 END;

/

于 2013-01-27T16:40:13.627 に答える
2

私は次の行に沿って何かを提案します:

DECLARE
stmt clob;
BEGIN

SELECT REPLACE (dbms_metadata.get_ddl('TABLE', 'TABLE_NAME'), 'CREATE TABLE ' || 'TABLE_NAME' , 'CREATE TABLE ' || 'NEW_TABLE_NAME') INTO stmt FROM DUAL;
 EXECUTE IMMEDIATE(stmt);
END;
于 2013-01-27T10:07:03.047 に答える