开发中,我们经常用create procedure命令创建存储过程,而在创建过程时实际发生的是,query analyzer检查其语法,检查完毕并正确后将其插入系统表syscomments中,而在过程中引用的对象名称在该过程被执行之前不被解析,这个技术叫做滞后名称解析。然而,这个技术却并不是和我们想象的一样,它也有鞭长莫及的地方。下面来看一个过程:
create proc testp @var int
as
if @var=1
create table #mytemp(k1 int identity,c1 int)
else
create table #mytemp(k1 int identity,c1 varchar(2))
insert #mytemp default values
select c1 from #mytemp
go
当编译该过程时,出现以下错误:
