1

我在使用 ODBC 异构连接通过 Oracle 数据库 (11.2.0.4) 在 SQL Server 2000 数据库上执行的更新语句中使用 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;

有谁知道我可以做些什么来完成这项工作?提前致谢。如果您需要更多信息,请告诉我。

4

2 回答 2

1

感谢@MickMnemonic 和另一位顾问,我们能够找到解决方案。

Oracle 有一个包允许您从应用程序执行 SQL 到 SQL Server 数据库。此功能将允许您成功执行一个语句,如您在过滤 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;
/
于 2015-03-23T20:18:42.620 回答
0

在你的 where 子句中尝试这个,而不是 anotherColumnName 为空的地方

另一个列名在哪里 || 'x' = 'x'

于 2016-09-01T14:17:21.507 回答