异构 Oracle 到 SQL Server:在 Where 子句中使用 "IS NULL" for Update 语句



我在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'

相关内容

  • 没有找到相关文章

最新更新