■SI ObjectBrowser掲示板

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

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




再帰WITH句の後にWITH句を続けるとエラーになる 2020/06/23 12:49:23
雉トラ           h_ito@ctc-jp.com
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
元の文章を引用して返信

Re: 再帰WITH句の後にWITH句を続けるとエラーになる 2020/06/25 10:55:46
OBサポート           oob.support@sint.co.jp
こんにちは。
OBサポートです。

お問い合わせいただいた件につきまして、ご提示のSQLがORA-00918を返しており
再現確認はできておりませんが、SI Object Browser for Oracle Ver.12での
Unicode対応に伴い、データアクセスコンポーネントを変更したことに起因して
発生している可能性がございます。
※Ver.14にて、ReadOnly EditionでWITH句を含むクエリが実行できない問題を
 修正しておりますが、こちらの修正では対応しきれていない点があるものと推測されます。

上述のデータアクセスコンポーネントは、開発言語の提供元由来となっておりますため
大変恐縮ですが早急な対応は難しいものとなります。

正常動作するVer.11をご利用いただくか、実行したいSQL全体をインラインビューとして
記述することにより動作する可能性がございますので、ご検討いただけますと幸いです。

===
SELCT * FROM (
-- 実行したいSQLを記述
)
===

ご不便をおかけし、誠に申し訳ございませんが
何卒、よろしくお願い申し上げます。
元の文章を引用して返信

Re: 再帰WITH句の後にWITH句を続けるとエラーになる 2020/08/24 17:29:20
雉トラ           h_ito@ctc-jp.com
ご回答ありがとうございます。

>実行したいSQL全体をインラインビューとして
>記述することにより動作する可能性がございますので、
ご提案頂いた方法で、実行できました。
元の文章を引用して返信