Здравствуйте.
Я несколько в тупиковом состоянии.
Почему MSSQL позволяет выполнять запросы к несуществующим таблицам?
Код:
CREATE VIEW [Temp_1]
AS
SELECT TOP (100) PERCENT TDoc_All.TDocId, TDoc_All.Index,
TDoc_All_5.Index
FROM TlDoc_All INNER JOIN
TDoc_All AS TDoc_All_5 INNER JOIN
TDocAll_Use ON TDoc_All_5.TDocId = TDocAll_Use.IdTDocSecond ON
TDoc_All.TDocId = TDocAll_Use.IdTlDocPrim
WHERE (TDoc_All.Annulir = 'False')
ORDER BY TDoc_All.TDocId
Там, где я выделил, я могу писать все что угодно, любой номер 1, 2, 10, 15.
Все равно запрос выполняется, вид создается, и все поля присутствуют!
Проверяю как результат выборки: SELECT * FROM Temp_1;
Почему я не получаю ошибку выполнения? Что за бред?
CREATE PROCEDURE (Transact-SQL)
Ограничения
Процедура может ссылаться на таблицы, которые еще не существуют. Во время создания хранимой процедуры выполняется только проверка синтаксиса. Процедура не компилируется до первого выполнения. Ссылки на все упоминаемые в процедуре объекты разрешаются только во время компиляции. Таким образом, ничто не мешает создать синтаксически правильную процедуру, ссылающуюся на несуществующие таблицы, однако если эти таблицы будут отсутствовать во время выполнения хранимой процедуры, она завершится с ошибкой.
Вопрос снят, внимательней посмотрел синтаксис и таки увидел переопределение AS.