2016-04-14 7 views
2

「Oracle SQL Developer」で次のSQL問合せを実行しようとしています。それぞれ異なる環境(ローカル/クライアント)にあります。Oracle Database:SQLクエリーが異なる環境で異なる動作をする

問合せ:

SELECT DISTINCT t.* 
FROM myTable t 
WHERE (:P_STATUS = -1 OR t.STATUS = :P_STATUS); 

パラメータ:
P_STATUS = -1 'Integer'(表内のすべてのデータを表示する)

期待される結果:
テーブルのすべてのレコードは

表示は、結果:
ローカル:表内のすべてのレコードが表示されます
C lient:
1 - 問題は、次のクエリ

SELECT DISTINCT t.* 
FROM myTable t 
WHERE :P_STATUS = -1) ; 
SELECT DISTINCT t.* 
FROM myTable t 
WHERE (:P_STATUS = -1 OR 1=2); 

2 - で発生していなかったこと、すでに昨日のクライアントでも実行が、今日それがこの奇妙なを与える:テーブル内のレコードが

は注意表示されません動作。だから私は変更された設定があると思うが、私はそれを期待することはできませんか、Googleで同様の問題を見つけることはできません。

3-特定のステータス(:P_STATUS = 2)を選択すると、クエリもうまく実行されました。

更新: テーブルから選択するとクエリが正しく実行されますが、テーブルのビューから選択するとデータは返されません。

また、Toadで正しく実行され、SQL Developerで正しく実行されません。

ステータスデータ型に問題があります。 (2)と、ビュー でテーブル番号ではなく、次のクエリでは、データは、それが、その後するローカルマシン上のセッションからINSERT編となっているが、COMMITテッドされていない場合は、SQL Developerの

SELECT DISTINCT t.* 
FROM myTable t 
WHERE (:P_STATUS = -1 OR to_number(t.STATUS) = :P_STATUS); 
+1

クライアントとローカルの両方が同じデータベースに接続していますか?彼らは両方とも同じユーザ( 'SELECT USER FROM DUAL')とテーブルスペース(' SELECT table_name、tablespace_name FROM user_tables WHERE table_name = 'MYTABLE'')に接続していますか?あなたが 'DESCRIBE myTable;'を実行すると、どちらも同じ記述になりますか? – MT0

+0

EBSとは? –

答えて

0

上で実行しますそのセッション内からのみ(コミットされていない状態で)表示できます。 SELECTにしようとすると、別のセッション(つまりクライアント)からのデータには結果が表示されません。

これを解決するには、COMMITローカルセッションのデータ。

+0

データがすでにコミットされていて、別のステータス(例:P_STATUS = 2)を入力するとテーブルからデータが返されます。 –