【发布时间】:2016-04-14 08:11:17
【问题描述】:
我正在尝试在两个“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);
【问题讨论】:
-
客户端和本地是否都连接到同一个数据库?它们是否都连接到同一个用户 (
SELECT USER FROM DUAL) 和表空间 (SELECT table_name, tablespace_name FROM user_tables WHERE table_name = 'MYTABLE')?如果您从两者中使用DESCRIBE myTable;,它们的描述是否相同?
标签: oracle