exec执行问题
hhmyz 2006-08-15 05:06:11 ALTER procedure line_tran @linesum int,@comp_no int,@forth_num int,@tbl_name varchar(20),@yearper int
as
truncate table temp1
declare @objid int,@line_temp int,@sqlstr1 varchar(4000),i int,@j int
select @objid = id from sysobjects where id = object_id(@tbl_name)
set @sqlstr1='insert into tbltemp(project) select top '+cast(@linesum as varchar)+' name from syscolumns where id = @objid order by colid'
exec (@sqlstr1)
---------此时说@objid没有声明
set @i=1
set @sqlstr1='declare '
while @i<=@linesum
begin
if @i=1
set @sqlstr1=@sqlstr1+'@cur_prf'+cast(@i as varchar)+' varchar(30)'
else
set @sqlstr1=@sqlstr1+',@cur_prf'+cast(@i as varchar)+' varchar(30)'
set @i=@i+1
end
exec (@sqlstr1)此后说@cur_prf1等没有定义。
EXEC会有这些限制吗?在里面运行不能有变量,里面也不能定义变量?
记得以前不是这样的,我的系统是:win2003,SQL2000看版本时是:Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
应是比较新的补丁了。