SQL 给变量赋固定值

declare@iint,@Nchar(100),@SQLvarchar(1000),@Bvarchar(10),@SQL1varchar(1000),@Kvarchar... declare @i int,@N char (100),@SQL varchar(1000),@B varchar(10),@SQL1 varchar(1000),@K varchar(20),@L varchar(20)
set @i=4
set @K= '计划车次'
set @L= '考核车次'
while @i<=23
begin
set @N = 'F'+ cast(@i as char(10))
set @B = cast(@i as char(10))
set @SQL = 'insert into #temptable6(线路,线路编码,时段,计划车次) select 线路,线路编码,'+@B+','+ @N +' from #temptable5
where [车次类型] ='+ @K
set @SQL1 = 'insert into #temptable6(线路,线路编码,时段,考核车次) select 线路,线路编码,'+@B+','+ @N +' from #temptable5
where [车次类型] =' +@L
exec (@SQL)
exec (@SQL1)
set @i=@i+1
end

说我计划车次 考核车次 列名无效。。。。
展开
 我来答
17号观察室
2013-07-08 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1384万
展开全部
--帮你改了 你的变量是字符串 你可以试着把变量的值换上去 你会发现没有单引号
--这是不允许的 这样就可以了
--不明白可以随时问我 希望采纳
declare @i int,@N char (100),@SQL varchar(1000),@B varchar(10),@SQL1 varchar(1000),@K varchar(20),@L varchar(20)
set @i=4
set @K= '计划车次'
set @L= '考核车次'
while @i<=23
begin
set @N = 'F'+ cast(@i as char(10))
set @B = cast(@i as char(10))
set @SQL = 'insert into #temptable6(线路,线路编码,时段,计划车次) select 线路,线路编码,'+''''+@B+''''+','+''''+ @N +''''+' from #temptable5
where [车次类型] ='+ ''''+@K+''''
set @SQL1 = 'insert into #temptable6(线路,线路编码,时段,考核车次) select 线路,线路编码,'+''''+@B+''''+','+ ''''+ @N +'''' +' from #temptable5
where [车次类型] =' +''''+@L+''''
exec (@SQL)
exec (@SQL1)
set @i=@i+1
end
追问
为什么加四个引号就可以了。。是SQL的规则吗?
追答
是这样的 因为你要把这个语句放在变量里面  sql的规则就是在单引号里面 两个点代表一个单引号
两边加起来 刚好可以把变量的值括起来 因为不能直接把变量用单引号括起来(这样会找不到变量的) 所以就只能用这样的方法 记住这个写法就可以了
如果解决了楼主的问题 希望采纳
708994812
2013-07-08 · TA获得超过131个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:119万
展开全部
确定set @i=4 和 set @K='计划车次' 之间不需要逗号隔开么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式