안녕하세요
아래의 11g에서 사용하는 쿼리를 10g이하에서도 사용가능하게 하고싶은데 가능할까요?
with dblink as
(
select '--as connect '||owner||'; --//you have to connect each schema' owner
,to_char(case when owner='PUBLIC' then '--DROP '||OWNER||' DATABASE LINK '||DB_LINK||';' else '--DROP DATABASE LINK '||DB_LINK||';' end) drop_dblink
,to_char(replace(dbms_metadata.get_ddl('DB_LINK',db_link,owner),Chr(10),''))||';' creation_dblink
from dba_db_links
)
select replace(x,'"','') from dblink
unpivot ( x for y in ( owner as 'owner', drop_dblink as 'drop_link', creation_dblink as 'creation_dblink'));
SELECT owner
, db_link
, DECODE(lv, 1, 'owner', 2, 'drop_link', 3, 'creation_dblink') y
, DECODE(lv
, 1, '--as connect '||owner||'; --//you have to connect each schema'
, 2, '--DROP '||DECODE(owner, 'PUBLIC', 'PUBLIC')||' DATABASE LINK '||db_link||';'
, 3, REPLACE(REPLACE(dbms_metadata.get_ddl('DB_LINK', db_link, owner), CHR(10)), '"')||';'
) x
FROM dba_db_links
, (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 3)
;
마농님
정말 감사드립니다.
마농님 근데요.
제가 원하는 결과가 아니라서요(상차려줘도 못먹나?)
원하는 결과가 아래와 같이 나타났으며 해서요
X
----
--as connect PUBLIC;
--DROP PUBLIC DATABASE LINK AAA;
CREATE PUBLIC DATABASE LINK AAA CONNECT TO CIMPROD IDENTIFIED BY VALUES ':1' USING 'ADB';
--as connect BBB;
--DROP PUBLIC DATABASE LINK BBBCC;
CREATE PUBLIC DATABASE LINK BBBCC CONNECT TO CIMPROD IDENTIFIED BY VALUES ':1' USING 'BBBCCDB';
글쎄요?
원하는 결과만 올리지 마시고...
잘못 나온 결과도 올려서 비교를 해주셔야 알죠?
1. 원하는 컬럼이 한개인데 제 쿼리는 조회컬럼이 여러개라서 문제인가요?
- 원하는 컬럼만 쓰시면 되요.
2. 혹시 결과가 뒤죽박죽인가요?
- ORDER BY 구문을 추가하시면 되요.
- ORDER BY owner, db_link, lv
마농님 죄송합니다.
제가 줘도 못먹었습니다.
잘됩니다. 다시한번 감사드립니다. 좋은 하루 되세요