powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11 не вылетает ошибка, хотя должна
5 сообщений из 5, страница 1 из 1
ASA 11 не вылетает ошибка, хотя должна
    #36359247
amakhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже один раз спрашивал, никто толком не ответил. Попробую еще раз.

ASA 11. Имеется явно неправильный SQL оператор, к примеру

Код: plaintext
1.
UPDATE Drugs SET Price =  1 
WHERE DrugId NOT IN (SELECT DrugId FROM DrugNames)  

ошибка в том, что колонки DrugId в таблице DrugNames не существует.
Выполняю его в Interactive SQL - работает без ошибок.

Если выполнить просто
Код: plaintext
SELECT DrugId FROM DrugNames

то уже естественно выдаёт ошибку.

Модератор: не забывай использовать тэг SRC
...
Рейтинг: 0 / 0
ASA 11 не вылетает ошибка, хотя должна
    #36359726
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю где и у кого ты спрашивал, но не подтверждаю.
Делаю на демо базе в SA11.0.1.2052:
Код: plaintext
1.
update Contacts set Country = 'aa'
where City not in (select garbage from Employees)
Получаю
dbisqlCould not execute statement.
Column 'garbage' not found
SQLCODE=-143, ODBC 3 State="42S22"
Line 1, column 1
...
Рейтинг: 0 / 0
ASA 11 не вылетает ошибка, хотя должна
    #36359829
amakhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

у меня SQL Anywhere Personal Server Version 11.0.0.1490

попробую обновиться
...
Рейтинг: 0 / 0
ASA 11 не вылетает ошибка, хотя должна
    #36361581
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-эх, други мои други...

Дело не в обновлениях. Смысл не в том, что несуществующая колонка, а в том, что она существует, только не там, где ее ищут.
Т.е. вот это
Код: plaintext
1.
UPDATE Drugs SET Price =  1 
WHERE DrugId NOT IN (SELECT DrugId FROM DrugNames)  
работает
А вот это
Код: plaintext
1.
UPDATE Drugs SET Price =  1 
WHERE DrugId NOT IN (SELECT DrugIdXXX FROM DrugNames)  
Уже не будет работать.
DrugId существует во внешнем запросе, а внутренний подзапрос при выборке тупо выдает значение, не имеющее отношения к таблице DrugNames, а переданное в него из вне. И соответственно такой апдейт ничего не обновит, т.к. значение всегда будет найдено в списке, состоящим из одного его же.
...
Рейтинг: 0 / 0
ASA 11 не вылетает ошибка, хотя должна
    #36363189
amakhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iLLer,
Блин, я идиот.
ну конечно же...

огромное спасибо - раскрыли глаза.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11 не вылетает ошибка, хотя должна
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]