2011-03-09 3 views
0

Oracle에서 맵핑 작성 스크립트를 추출하기위한 순수한 SQL 메소드에 대해 알고 있습니까?작성 스크립트로웨어 하우스 맵핑 추출

SELECT SYS_CONNECT_BY_PATH(text, ' ') PackageScript FROM (
    SELECT text, ROW_NUMBER() OVER (order by line) rownumber, COUNT(*) OVER() cnt 
    FROM (SELECT text, line FROM dba_source WHERE NAME = 'MAPPING_NAME' AND TYPE = 'PACKAGE' AND substr(text, 0,2) != '--' AND text IS NOT NULL) 
) data 
WHERE rownumber = cnt 
START WITH rownumber = 1 
CONNECT BY PRIOR rownumber = rownumber-1; 

문제는 그래서 지금이이

SELECT text FROM dba_source WHERE NAME = 'MAPPING_NAME' AND TYPE = 'PACKAGE'; 

하지만 한 줄이 점을 설정하기 위해

, 나는 http://dotnetsurfers.com/blog/2008/01/16/concatenating-rows-in-a-table-into-a-single-string-using-sql/에서 팁을 사용했습니다 다음 SQL은 올바른 결과를 반환 결과가 4000자를 넘으면 oracle은 문자열을 연결할 수 없습니다. 오류가 발생합니다 :

ORA-01489: result of string concatenation is too long 

더 좋은 방법이 있습니까?

답변

4

다음은 개체에 대한 ddl을 꺼냅니다.

select dbms_metadata.get_ddl('object_type_goes_here','object_name_goes_here','owner_goes_here') 
from dual 
관련 문제