■SI ObjectBrowser掲示板

ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!discussion
ユーザーのみなさま同士で教え合ったり、アドバイスしたりする暖かい交流の場にしたいと思っていますので、相互協力をよろしくお願いします。なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

※◆のカラーは投稿の対象となる製品に対応しています。【…OB …OBER …全般 ◇…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。




投稿No.7583
ツリー表示
2020/06/23 12:49:23
ハンドルネーム 雉トラ           h_ito@ctc-jp.com
製品 OB
タイトル 再帰WITH句の後にWITH句を続けるとエラーになる
メッセージ本文 SI Object Browser for Oracle 18 ReadOnly Editionを使用しています。
下記のように再帰WITH句の後にWITH句を続けて書くと、『SELECT 文以外の SQL 文を実行する事は出来ません。』というエラーが発生してしまい、SQLを実行する事ができません。
SI Object Browser for Oracle Ver.11 ReadOnly Editionを使用していた際には問題なく実行できていました。
SQL*Plusでは問題なく実行できます。
お忙しい所恐縮ですが、原因の調査を行って頂けますでしょうか。

WITH TEMP1(LVL
,TYPE
,OWNER
,NAME
,ID
,REFERENCED_TYPE
,REFERENCED_OWNER
,REFERENCED_NAME
,REFERENCE_PATH
)
AS (
SELECT 1
,TYPE
,OWNER
,NAME
,OWNER || '.' || NAME
,REFERENCED_TYPE
,REFERENCED_OWNER
,REFERENCED_NAME
,OWNER || '.' || NAME || '-' || REFERENCED_OWNER || '.' || REFERENCED_NAME
FROM DBA_DEPENDENCIES
WHERE OWNER = UPPER('SYS')
AND NAME = UPPER('V$SESSION')
AND REFERENCED_OWNER = 'SYS'
UNION ALL
SELECT T.LVL + 1
,DBAD2.TYPE
,DBAD2.OWNER
,DBAD2.NAME
,DBAD2.OWNER || '.' || DBAD2.NAME
,DBAD2.REFERENCED_TYPE
,DBAD2.REFERENCED_OWNER
,DBAD2.REFERENCED_NAME
,T.REFERENCE_PATH || '-' || DBAD2.REFERENCED_OWNER || '.' || DBAD2.REFERENCED_NAME
FROM DBA_DEPENDENCIES DBAD2
,TEMP1 T
WHERE DBAD2.OWNER = T.REFERENCED_OWNER
AND DBAD2.NAME = T.REFERENCED_NAME
AND DBAD2.REFERENCED_OWNER = 'SYS'
)
SEARCH DEPTH FIRST BY NAME SET ORDER1
CYCLE ID SET ISLOOP TO 'Y' DEFAULT 'N'
,DEPENDENCIES AS (
SELECT UPPER('SYS.V$SESSION') AS ROOT
,0
,NULL
,NULL
,NULL
,CASE LISTAGG(OBJECT_TYPE,',') WITHIN GROUP (order by OBJECT_TYPE)
WHEN 'MATERIALIZED VIEW,TABLE' THEN 'MATERIALIZED VIEW'
WHEN 'PACKAGE BODY,PACKAGE' THEN 'PACKAGE BODY'
ELSE LISTAGG(OBJECT_TYPE,',') WITHIN GROUP (order by OBJECT_TYPE)
END
,OWNER
,OBJECT_NAME
,0
,UPPER('SYS.V$SESSION')
FROM DBA_OBJECTS
WHERE OWNER = UPPER('SYS')
AND OBJECT_NAME = UPPER('V$SESSION')
GROUP BY OWNER,OBJECT_NAME
UNION ALL
SELECT UPPER('SYS.V$SESSION') AS ROOT
,TEMP1.LVL
,TEMP1.TYPE
,TEMP1.OWNER
,TEMP1.NAME
,CASE WHEN TEMP1.REFERENCED_TYPE = 'TABLE' AND DBA_MVIEWS.MVIEW_NAME IS NOT NULL
THEN 'MATERIALIZED VIEW'
ELSE TEMP1.REFERENCED_TYPE
END
,TEMP1.REFERENCED_OWNER
,TEMP1.REFERENCED_NAME
,TEMP1.ORDER1
,TEMP1.REFERENCE_PATH
FROM TEMP1
LEFT OUTER JOIN DBA_MVIEWS
ON TEMP1.REFERENCED_OWNER = DBA_MVIEWS.OWNER
AND TEMP1.REFERENCED_NAME = DBA_MVIEWS.MVIEW_NAME
WHERE ISLOOP = 'N' --訪問済みノードを表示しない
)
SELECT
*
FROM DEPENDENCIES
元の文章を引用して返信