我在SQL Server 2000数据库上通过Oracle数据库(11.2.0.4)使用ODBC异构连接执行的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;
有人知道我能做些什么来完成这项工作吗?提前谢谢。如果你需要更多信息,请告诉我。
感谢@MickMnemonic和另一位顾问,我们找到了解决方案。
Oracle有一个包,允许您从应用程序到SQL Server数据库执行SQL。这个函数将允许您成功地执行一个语句,就像问题中提到的对NULL值进行筛选的语句一样。用于DBMS_HS_PASSTHROUGH 的Oracle文档
下面是一个有效的新代码示例。
DECLARE
num_rows INTEGER;
BEGIN
num_rows :=
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@RemoteSQLServer2000 (
'UPDATE TABLENAME SET "ColumnName" = ''SomeValue'' WHERE AnotherColumnName IS NULL');
END;
/
在where子句中尝试此操作,而不是在AnotherColumnName为空的地方
其中AnotherColumnName||'x'='x'