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
说我计划车次 考核车次 列名无效。。。。 展开
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
说我计划车次 考核车次 列名无效。。。。 展开
展开全部
--帮你改了 你的变量是字符串 你可以试着把变量的值换上去 你会发现没有单引号
--这是不允许的 这样就可以了
--不明白可以随时问我 希望采纳
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
--这是不允许的 这样就可以了
--不明白可以随时问我 希望采纳
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的规则就是在单引号里面 两个点代表一个单引号
两边加起来 刚好可以把变量的值括起来 因为不能直接把变量用单引号括起来(这样会找不到变量的) 所以就只能用这样的方法 记住这个写法就可以了
如果解决了楼主的问题 希望采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询