Гетерогенный 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'