当前位置:数据库 > Oracle >>

Oracle获取DDL语句

Oracle获取DDL语句
 
Sql代码  
SET LONG 2000000  
SET PAGESIZE 0  
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);  
select dbms_metadata.GET_DDL(u.object_type,u.object_name,'SCOTT') from dba_objects u where owner = 'SCOTT';  
 
 查询出来的是Clob而非String 所以需要把Clob转换成String
 
Java代码  
String clobToString(Clob clob) {  
        try {  
            // 以 java.io.Reader 对象形式(或字符流形式)    
            //检索此 Clob 对象指定的 CLOB 值 --Clob的转换    
            Reader inStreamDoc = clob.getCharacterStream();  
            // 取得clob的长度    
            char[] tempDoc = new char[(int) clob.length()];  
            inStreamDoc.read(tempDoc);  
            inStreamDoc.close();  
            return new String(tempDoc);  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (SQLException es) {  
            es.printStackTrace();  
        }  
        return null;  
    }  
  
    String sqlSpecialChars(String str) {  
        str = str.replaceAll("'", "''");  
        return str;  
    }  
转换之后就可以输出DDL了。 
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,