Oracle数据库:SQL Query在不同的环境中有不同的行为

时间:2016-04-14 08:11:18

标签: oracle

我试图在两个Oracle SQL Developer'中执行以下SQL查询。每个人都在不同的环境中(本地/客户)。

查询:

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

参数:
 P_STATUS = -1 'Integer'(显示表格中的所有数据)

预期结果:
 显示表格中的所有记录

结果:
 本地:显示的表中的所有记录
 客户:显示的表中没有记录

注意:
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-它昨天在客户端已经表现良好,但今天却出现了这种奇怪的行为。所以我认为有一个改变的配置,但我不能指望它或在谷歌找到任何类似的问题。

3-当我选择特定状态(:P_STATUS = 2)时,查询也执行得很好。

更新: 如果我从表中选择但是当从表中的视图中选择时,查询运行正确,则它不返回数据。

在Toad中运行正确,但在SQL Developer中运行不正确。

状态数据类型中的问题。在表号(2)中也在视图中 但是以下查询使它在SQL Developer上运行

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

1 个答案:

答案 0 :(得分:0)

如果数据已从本地计算机上的会话INSERT编辑但尚未COMMIT,那么它将仅在该会话中可见(处于未提交状态)。尝试SELECT来自另一个会话(即客户端)的数据将不会显示任何结果。

要解决此问题,COMMIT本地会话中的数据。