我在使用ODBC异构连接通过Oracle数据库(11.2.0.4)在SQL Server 2000数据库上执行的Update语句中使用IS NULL条件时遇到问题。
无效的更新语句示例。
UPDATE TABLENAME@RemoteSQLServer2000
SET "ColumnName" = 'SomeValue'
WHERE "AnotherColumnName" IS NULL;
结果:
ORA-02070:数据库RemoteSQLServer2000在此上下文中不支持IS NULL
但是,以下声明可以正常工作:
SELECT *
FROM TABLENAME@RemoteSQLServer2000
WHERE "AnotherColumnName" IS NULL;
有没有人知道我能做些什么来使这项工作?提前致谢。如果您需要更多信息,请告诉我。
答案 0 :(得分:1)
感谢@MickMnemonic和另一位顾问,我们找到了解决方案。
Oracle有一个包,允许您从应用程序执行SQL到SQL Server数据库。此函数将允许您成功执行类似于您在过滤NULL值的问题中提到的语句。 Oracle Documentation for DBMS_HS_PASSTHROUGH
以下是有效的新代码示例。
DECLARE
num_rows INTEGER;
BEGIN
num_rows :=
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@RemoteSQLServer2000 (
'UPDATE TABLENAME SET "ColumnName" = ''SomeValue'' WHERE AnotherColumnName IS NULL');
END;
/
答案 1 :(得分:0)
在where子句中尝试此操作,而不是在AnotherColumnName为null的位置
其中AnotherColumnName || 'x'='x'