Пример:
create table dbo.t1 (id int)
if OBJECT_ID('dbo.s_Test') is not null drop proc dbo.s_Test
GO
create proc dbo.s_Test
as
create table #t2 (id2 int)
select t.id, t.xyz from dbo.t1 t join #t2 t2 on t2.id2 = t.id
GO
Когда был создан proc s_Test, я ожидал ошибку типа "Неверное имя столбца 'xyz', но во время создания процедуры ошибки нет. Кажется, таблица #temp как-то связана с этим, так как если я создаю эту версию с табличной переменной:
if OBJECT_ID('dbo.s_Test2') is not null drop proc dbo.s_Test2
GO
create proc dbo.s_Test2
as
declare @t2 table (id2 int)
select t.id, t.xyz from dbo.t1 t join @t2 t2 on t2.id2 = t.id
GO
Я получаю сообщение об ошибке: неверное имя столбца 'xyz'. Любые идеи о том, почему версия таблицы #temp не выдает ошибку во время создания хранимого процесса?
Использование SQL Server 2012, в случае, если это имеет значение.