Гетерогенный Oracle для SQL Server: использование "IS NULL" в предложении Where для оператора Update

У меня возникли проблемы с использованием условия IS NULL в операторе Update, выполняемом для базы данных SQL Server 2000 через базу данных Oracle (11.2.0.4) с использованием гетерогенного соединения ODBC.

Пример оператора обновления, который не будет работать.

UPDATE TABLENAME@RemoteSQLServer2000
  SET "ColumnName" = 'SomeValue'
WHERE "AnotherColumnName" IS NULL;

Результат:

ORA-02070: база данных RemoteSQLServer2000 не поддерживает IS NULL в этом контексте

Тем не менее, следующее утверждение работает нормально:

SELECT *
  FROM TABLENAME@RemoteSQLServer2000
 WHERE "AnotherColumnName" IS NULL;

Кто-нибудь имеет представление о том, что я могу сделать, чтобы сделать эту работу? Заранее спасибо. Дайте мне знать, если вам нужно больше информации.

2 ответа

Благодаря @MickMnemonic и другому консультанту мы смогли найти решение.

Oracle имеет пакет, который позволяет выполнять SQL из приложения в базу данных SQL Server. Эта функция позволит вам успешно выполнить оператор, подобный тому, который упоминался в вопросе, где вы фильтруете значения NULL. Документация Oracle для 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;
/

Попробуйте это в вашем предложении where вместо whereColumnName, равным NULL

Где AnotherColumnName || 'x' = 'x'

Другие вопросы по тегам