Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

FAQ - Вопросы - ответы - советы - Базы данных

Вопрос:

[SQL] При попытке выполнения такого оператора SQL - "DELETE FROM T39 T39C0 WHERE T39C0.F1LHT35=253291661" SQL-сервер ругается на недопустимый синтаксис. В чем я неправ?

Ответ:

В данном случае, видимо, T39C0 расценивается как псевдоним.

Но стандартом SQL-92 такое запрещено в DELETE. Цитата собственно из этого стандарта (сборник из DELETE и NAMES AND IDENTIFIERS, определение IDENTIFIER пропущено, просто набор | , начинается с буквы):

FORMAT
<DELETE STATEMENT: POSITIONED>::=
DELETE FROM <TABLE NAME> WHERE CURRENT OF <CURSOR NAME>

<TABLE NAME> ::= <QUALIFIED NAME> | <QUALIFIED LOCAL  NAME>
<QUALIFIED NAME> ::= [<SHEMA NAME><PERIOD>] [<QUALIFIED IDENTIFIER>]
<QUALIFIED IDENTIFIER> ::=<IDENTIFIER>
<SHEMA NAME>::=[<CATALOG NAME><PERIOD>]<UNQUALIFIED SHEMA NAME>
<UNQUALIFIED SHEMA NAME>::=<IDENTIFIER>
<CATALOG NAME>::=<IDENTIFIER>
<QUALIFIED LOCAL  NAME>::= MODULE <PERIOD><LOCAL TABLE NAME>
<LOCAL TABLE NAME>::=<QUALIFIED IDENTIFIER>

Стандартом запрещено вот такое SELECT TEST.A, P_TEST.A FROM TEST P_TEST; вот это не по стандарту, хотя MS такое ест.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог