■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
WITH句使用のSELECT文 2003/11/12 16:02 OB 6
WITH句を使用したSELECT文をSQL実行で使用した場合
『SQLを実行しました。(対象:0 レコード)』というダイアログが
出てしまいクエリーの結果が返ってきません。
改善をお願いします。

サンプル
---------------------------------------
WITH A AS (SELECT * FROM DUAL)
SELECT * FROM DUAL CROSS JOIN A
---------------------------------------

SQL*Plusでの実行例
---------------------------------------
SQL> WITH A AS (SELECT * FROM DUAL)
2 SELECT * FROM DUAL CROSS JOIN A
3 /

D D
- -
X X
---------------------------------------
こんにちは
後迫@SIです。

サンプルをいただきありがとうございます。

>WITH A AS (SELECT * FROM DUAL)
>SELECT * FROM DUAL CROSS JOIN A

上記SQL文をSQL実行画面にて実行した所、
SELECT結果は返ってきました。

上記SQLをBEGIN ~ ENDブロックなどで囲んでいるということはありますでしょうか?
その場合、ストアドプロシージャとして認識されてしまい、
実行してもSELECT結果を取得できませんので、
BEGIN ~ ENDブロックで囲んでいる場合は、
削除して実行していただけますでしょうか。

どうぞよろしくお願いいたします。


横から申し訳ありません。

こちらの環境でも ほいほい さんと同様に
「SQLを実行しました。(対象:0レコード)」
というメッセージが出てきてしまいます。

てっきり、DDLとして認識されてしまっていると
あきらめていたのですが、
設定によって、実行が正常に返ってくるのでしょうか?

環境 Oracle9i 9.2.0.1.0
SI OB 8.0.2.7


こんにちは
後迫@SIです。

SELECT文をBEGIN~ENDブロックで囲んでいないにもかかわらず、
エラーが出るということでしょうか?

弊社で現象が再現せず、原因の特定が困難な状態です。
誠に申し訳ございません。

引き続き、開発側で原因を調査しておりますので、
もうしばらくお待ちしていただけますでしょうか。

ご迷惑をおかけしてしまい大変申し訳ございませんが、
どうぞよろしくお願いいたします。
>SELECT文をBEGIN~ENDブロックで囲んでいないにもかかわらず、
>エラーが出るということでしょうか?

そのとおりです。

しかし、その後
ふと、思いつき試したところ、
どうやらクライアント OCI.DLL のバージョンによるようです。
サーバーが Oracle 9i でも
クライアントが Oracle 8i 以下の場合は前記のようなメッセージが出るようです。

このようなサーバーとクライアントのバージョンが異なるのは
動作環境外でした。
横槍をいれてしまい、もうしわけありませんでした。
>>クライアントが Oracle 8i 以下の場合は前記のようなメッセージが出るようです。
これはいい情報をありがとうございます。
最初からOracleの環境を書いておくべきでした

この現象がおきている環境は8、9iクライアント混在環境です。
ためしに環境変数PATHに9iのBINフォルダの方を先に指定した場合
ダイアログが出ずに結果が正しく出力されました。

Oracle Net Cliant 8.0.6.3.2c
Oracle Net 9.2.0.1.0
ご報告ありがとうございます。
現象を確認いたしました。

サーバOracle9i,クライアントOracle8
の場合に同様の現象を確認いたしました。

また、サーバOracle8,クライアントOracle8の場合は
WITH句が使えずエラーになりました。
おそらく、Oracle8がWITH句をサポートしていない
(SQL99規格に準拠していない)ことが原因だと思われます。

誠に恐縮ですが、
この不具合につきましてはクライアント環境に依存する原因のため
Object Browser側で対応させることはできません。

ご希望に添えず誠に申し訳ございません。
クライアントのバージョンを上げることで対応をお願いできますでしょうか。
どうぞよろしくお願いいたします。