帮忙看一下这个sql存储过程,里面的单引号和变量把我看晕了,不知道什么意思了!!create proc GetUserInfoReverse
(@CardID varchar(50))
as
declare @f1 varchar(8000),@f2 varchar(8000),@f3 varchar(8000),@f4 varchar(8000),
@f5 varchar(8000),@f6 varchar(8000),@f7 varchar(8000)
select @f1='',@f2='',@f3='',@f4='',@f5='',@f6='',@f7=''
select @f1=@f1+',['+convert(varchar(10),UserID)+']='''+CardID+'''',
@f2=@f2+','''+UserName+'''',
@f3=@f3+','''+UserPwd+'''',
@f4=@f4+','''+convert(varchar(3),UserAge)+'''',
@f5=@f5+','''+UserSex+'''',
@f6=@f6+','''+RankTitle+'''',
@f7=@f7+','''+UserDept+''''
from UserInfo join Rank
on UserRankID=RankID
where CardID=@CardID
exec('select 个人信息=''卡号'''+@f1
+' union all select ''姓名'''+@f2
+' union all select ''密码'''+@f3
+' union all select ''年龄'''+@f4
+' union all select ''性别'''+@f5
+' union all select ''头衔'''+@f6
+' union all select ''所在部门'''+@f7)
go
(@CardID varchar(50))
as
declare @f1 varchar(8000),@f2 varchar(8000),@f3 varchar(8000),@f4 varchar(8000),
@f5 varchar(8000),@f6 varchar(8000),@f7 varchar(8000)
select @f1='',@f2='',@f3='',@f4='',@f5='',@f6='',@f7=''
select @f1=@f1+',['+convert(varchar(10),UserID)+']='''+CardID+'''',
@f2=@f2+','''+UserName+'''',
@f3=@f3+','''+UserPwd+'''',
@f4=@f4+','''+convert(varchar(3),UserAge)+'''',
@f5=@f5+','''+UserSex+'''',
@f6=@f6+','''+RankTitle+'''',
@f7=@f7+','''+UserDept+''''
from UserInfo join Rank
on UserRankID=RankID
where CardID=@CardID
exec('select 个人信息=''卡号'''+@f1
+' union all select ''姓名'''+@f2
+' union all select ''密码'''+@f3
+' union all select ''年龄'''+@f4
+' union all select ''性别'''+@f5
+' union all select ''头衔'''+@f6
+' union all select ''所在部门'''+@f7)
go
+' union all select ''姓名'''+@f2
+' union all select ''密码'''+@f3
+' union all select ''年龄'''+@f4
+' union all select ''性别'''+@f5
+' union all select ''头衔'''+@f6
+' union all select ''所在部门'''+@f7PRINT @SQL这样你就知道到底那个EXEC在干什么了......
(@CardID varchar(50))
as
declare @f1 varchar(8000),@f2 varchar(8000),@f3 varchar(8000),@f4 varchar(8000),
@f5 varchar(8000),@f6 varchar(8000),@f7 varchar(8000) --定义变量
select @f1='',@f2='',@f3='',@f4='',@f5='',@f6='',@f7='' --设置初时变量
select @f1=@f1+',['+convert(varchar(10),UserID)+']='''+CardID+'''',
@f2=@f2+','''+UserName+'''',
@f3=@f3+','''+UserPwd+'''',
@f4=@f4+','''+convert(varchar(3),UserAge)+'''',
@f5=@f5+','''+UserSex+'''',
@f6=@f6+','''+RankTitle+'''',
@f7=@f7+','''+UserDept+''''
from UserInfo join Rank
on UserRankID=RankID
where CardID=@CardID --给变量赋值,这个是select变量。就是从表取出值赋值给各个变量
exec('select 个人信息=''卡号'''+@f1
+' union all select ''姓名'''+@f2
+' union all select ''密码'''+@f3
+' union all select ''年龄'''+@f4
+' union all select ''性别'''+@f5
+' union all select ''头衔'''+@f6
+' union all select ''所在部门'''+@f7) --进行查询。
go
参考1楼的做法,多运行运行查询,看看运行结果,就不糊涂了。
select @f1=@f1+',['+convert(varchar(10),UserID)+']='''+CardID+'''',
@f2=@f2+','''+UserName+'''',
@f3=@f3+','''+UserPwd+'''',
@f4=@f4+','''+convert(varchar(3),UserAge)+'''',
@f5=@f5+','''+UserSex+'''',
@f6=@f6+','''+RankTitle+'''',
@f7=@f7+','''+UserDept+''''
from UserInfo join Rank
on UserRankID=RankID
where CardID=@CardID
里引号配对的问题
先print 出来看看,可以执行不?
select ''
select ''''
select ''''''
select '''aa'''