Это может работать (с точки зрения компиляторов SQL), если в одну из таблиц добавлен столбец с именем t1
, а также добавлен метод метод с именем c1
.в базу данных.
Поскольку компилятор не знает, какие имена и методы могут быть добавлены в будущем, правила разрешения отложенных имен гласят, что он должен его принять.
Короче, это не синтаксическая ошибка, поэтому НЕ будет отклонено.
Подобные проблемы действительно следует обнаруживать во время отладки, но если выКогда вы анализируете и сохраняете хранимые процедуры, вы можете получить их в основном, выполнив что-то вроде этого:
create procedure tempsproc
as
select t1.c1
from #t
join t2 on #t.c2 = t3.c3
go
BEGIN TRANSACTION
EXEC tempsproc;
ROLLBACK TRANSACTION
go
МЕТОДЫ ТИПА
Меня попросили рассказать о методах типов, поэтому вот оно.
Большинство новых типов данных, таких как XML и Spatial, включают специальные методы, которые можно использовать только вэти типы данных.Вот пример от Microsoft:
CREATE TABLE SpatialTable
( id int IDENTITY (1,1),
GeomCol1 geometry,
GeomCol2 AS GeomCol1.STAsText() );
GO
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
Здесь показаны два очень разных формата метода (GeomCol1.STAsText()
и geometry::STGeomFromText('...')
), что подчеркивает еще один момент.
Этот синтаксис должен был соответствовать определенным стандартам (в данном случае OGC).Методы XML должны соответствовать другому стандарту.Другие типы данных, которые они добавят в будущем, возможно, должны будут соответствовать еще другим стандартам, что означает, что они должны быть достаточно гибкими в отношении того, каким может быть допустимый синтаксис метода, включая то, есть ли у него круглые скобки.
Наконец, вы можете задаться вопросом: « Но разве они не знают заранее, какие существуют методы типов данных? » Удивительно, но ответ «НЕТ», потому что SQL Server позволяет новым типам данныхбыть добавлены к существующим серверам и базам данных.Так, например, типы данных XML изначально были необязательным дополнением (расширением) к SQL Server (затем они были встроены в следующую основную версию).Кроме того, я считаю (не уверен), что клиенты и третьи стороны также могут создавать свои собственные и добавлять их в существующую базу данных.