我试图在两个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);
答案 0 :(得分:0)
如果数据已从本地计算机上的会话INSERT
编辑但尚未COMMIT
,那么它将仅在该会话中可见(处于未提交状态)。尝试SELECT
来自另一个会话(即客户端)的数据将不会显示任何结果。
要解决此问题,COMMIT
本地会话中的数据。