--统计每个寝室各个状态的床位数并填充统计表数据
declare @count int
declare @zksm nvarchar(20)
declare @qsid nvarchar(7)
declare @zkm nvarchar(1)
declare cur cursor for select qsid from GYGL_qsb
open cur
fetch cur into @qsid
while(@@fetch_status=0)
begin declare cur1 cursor for select cwzkm from GYGL_CWZKM
open cur1
fetch cur1 into @zkm
while(@@fetch_status=0)
begin set @zksm = (select top 1 zksm from gygl_cwzkm where cwzkm=@zkm)
set @count= (select count(*) from gygl_cwb where CWZKM=@zkm and qsid=@qsid)
exec('insert into GYGL_CWTJ (QSID,['+@zksm+']) values (@qsid,@count)') --错误应该在这句
-- exec('insert into GYGL_CWTJ (QSID,['+@zksm+']) values ('+@qsid+','+@count+')') --这句也不行
fetch cur1 into @zkm
end
close cur1
deallocate cur1
fetch cur into @qsid
end
close cur
deallocate cur
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@qsid"。
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@qsid"。
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@qsid"。
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@qsid"。
SET @sql = 'insert into GYGL_CWTJ (QSID,['+@zksm + ']) values ('+@qsid +',' + @count +')'
用了你的这句消息 128,级别 15,状态 1,第 1 行
在此上下文中不允许使用名称 "N01101"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,第 1 行
在此上下文中不允许使用名称 "N01101"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,第 1 行
N01101是Qsid 的具体记录
报错消息 102,级别 15,状态 1,第 23 行
'cast' 附近有语法错误。
if exists (select * from dbo.sysobjects where
id = object_id(N'GYGL_CWTJ') and
OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table GYGL_CWTJ
create table GYGL_CWTJ
([Qsid] nVarChar(7) PRIMARY KEY )declare @mc nvarchar(40)
declare cur cursor for select zksm from GYGL_CWZKM
open cur
fetch cur into @mc
while(@@fetch_status=0)
begin
---Alter table GYGL_CWTJ add @mc int
exec('alter table GYGL_CWTJ add ['+@mc+'] int')
fetch cur into @mc
end
close cur
deallocate cur
--------------------------------------
--统计每个寝室各个状态的床位数并填充统计表数据
declare @count int
declare @zksm nvarchar(20)
declare @qsid nvarchar(7)
declare @zkm nvarchar(1)
declare cur cursor for select qsid from GYGL_qsb
open cur
fetch cur into @qsid
while(@@fetch_status=0)
begin declare cur1 cursor for select cwzkm from GYGL_CWZKM
open cur1
fetch cur1 into @zkm
while(@@fetch_status=0)
begin set @zksm = (select top 1 zksm from gygl_cwzkm where cwzkm=@zkm)
set @count= (select count(*) from gygl_cwb where CWZKM=@zkm and qsid=@qsid)
-- exec('insert into GYGL_CWTJ (QSID,['+@zksm+']) values (@qsid,@count)') --错误应该在这句
exec('insert into GYGL_CWTJ (QSID,['+@zksm+']) values ('+@qsid+','+cast(@count as nvarchar(20))+')') --exec('insert into GYGL_CWTJ (QSID,['+@zksm+ ']) values (' +@qsid+',' +@count+')') --这句也不行
fetch cur1 into @zkm
end
close cur1
deallocate cur1
fetch cur into @qsid
end
close cur
deallocate cur前面创建表的没有问题