请问如何拷贝index,也就是创建与现有的index相同的index?
 谢谢...

解决方案 »

  1.   

    適當修改一下就行了,你會得到一個創建索引的sql文件SPOOL C:\CRE_IND.SQL
    SET SERVEROUTPUT ON SIZE 1000000DECLARE
      CURSOR C_IND IS SELECT * FROM USER_INDEXES;  --所有的索引
      V_COL  VARCHAR2(4000);
      V_SQL  VARCHAR2(4000);
    BEGIN
      FOR I IN C_IND LOOP
        V_COL := NULL;
        DECLARE
          CURSOR C_IND_COL IS 
                    SELECT * FROM USER_IND_COLUMNS  --当前索引包含的列
                     WHERE INDEX_NAME=I.INDEX_NAME 
                     ORDER BY COLUMN_POSITION ; --字段顺序
        BEGIN
          FOR J IN C_IND_COL LOOP
            V_COL := V_COL ||','||J.COLUMN_NAME||' '||J.DESCEND; --拼合列名及索引排序方式
          END LOOP;
          V_COL := SUBSTR(V_COL,2);
        END;
      V_SQL := 'CREATE INDEX '||I.INDEX_NAME||' ON ' --拼合创建索引语句
              ||I.TABLE_OWNER||'.'||I.TABLE_NAME||'('||V_COL||') TABLESPACE '
              ||I.TABLESPACE_NAME||';';
      DBMS_OUTPUT.PUT_LINE(V_SQL); --输出结果
      END LOOP;
    END;
    /SPOOL OFF;