DECLARE
OWNERCurrent VARCHAR2(20):='大写表空间';-- 表空间
CURSOR tbCursor IS
SELECT TABLE_NAME
FROM ALL_TABLES WHERE OWNER=OWNERCurrent;
V_CLOB CLOB :='';
tbIndex NUMBER :=0;
BEGIN
DBMS_OUTPUT.ENABLE(buffer_size => null);
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',FALSE);
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'TABLESPACE',FALSE);
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',FALSE);
FOR item IN tbCursor LOOP
tbIndex:=tbIndex+1;
DBMS_OUTPUT.PUT(chr(10)||'--'||tbIndex);
SELECT DBMS_METADATA.GET_DDL('TABLE', item.TABLE_NAME,OWNERCurrent)
INTO V_CLOB
FROM DUAL;
V_CLOB := REPLACE(V_CLOB, '"');
IF INSTR(V_CLOB, 'PRIMARY KEY', 1, 1) <> 0 THEN
V_CLOB := REPLACE(V_CLOB, ';', ');');
END IF;
V_CLOB := REPLACE(V_CLOB,OWNERCurrent||'.', '');
DBMS_OUTPUT.PUT_LINE(V_CLOB||';');
DECLARE
CURSOR cursorx IS
SELECT DBMS_METADATA.GET_DDL('INDEX',TB.INDEX_NAME) AS CSQL
FROM (SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME=item.TABLE_NAME AND uniqueness!='UNIQUE') TB;
INDEX_SQL VARCHAR2(600) :='';
BEGIN
FOR indexx IN cursorx LOOP
INDEX_SQL:=indexx.CSQL;
INDEX_SQL:=REPLACE(INDEX_SQL,'"'||OWNERCurrent||'".', '');
DBMS_OUTPUT.PUT(INDEX_SQL||';');
END LOOP;
END;
END LOOP;
END;