我有一些代码在 2 个不同的数据库中运行相同的查询。
SELECT
P.MYID,
CASE WHEN
SUBSTR(P.MYID, 1, 1) NOT IN ('W') THEN
'YOUR_ID_IS_NOT_START_WITH_W'
ELSE
(SELECT OTHER_ID FROM PERSON WHERE NUMBER = '2554' )
END AS "ALTERNATE_ID"
FROM
PERS_INFO P
WHERE
P.NUMBER = '2554'
此示例中的 OTHER_ID 是仅存在于第二个数据库中的列。这完全没问题,因为只有当 id 不以“W”开头时,查询才会在第一个数据库中执行。换句话说,这个查询只会在第一个数据库中运行,当 MYID 不以“W”开头时,并且只会在 MYID 确实以“W”开头时在第二个数据库中运行。
所以查询可以在两个数据库中工作,但是,查询在第一个数据库中失败并出现 ORA-00904,因为它说 OTHER_ID 在第一个数据库中是不合法的(这是真的,但我不在乎)。我如何强制 oracle 无论如何运行查询或解决这个问题?