declare @s2 varchar(4000),@s3 varchar(4000)
set @s2=''
set @s3=''
set @s3='select @S2=@S2+RTRIM(ItemName)
FROM (select Distinct ItemName from TAB1) B
GROUP BY ItemName'exec(@s3)执行提示错误:
Server: Msg 137, Level 15, State 1, Line 3
必须声明变量 '@s2'。其实目的就是动态生成一条命令@S3,执行这条命令. 应该怎么解决这个错误?(不要看我语句是否合理,我是简化了。)
set @s2=''
set @s3=''
set @s3='select @S2=@S2+RTRIM(ItemName)
FROM (select Distinct ItemName from TAB1) B
GROUP BY ItemName'exec(@s3)执行提示错误:
Server: Msg 137, Level 15, State 1, Line 3
必须声明变量 '@s2'。其实目的就是动态生成一条命令@S3,执行这条命令. 应该怎么解决这个错误?(不要看我语句是否合理,我是简化了。)
解决方案 »
- 在数据库中‘+’的用法
- 求救!获取XML根结点名称
- 明明是1433端口的,为什么自己变成了139端口的?
- 关于时间的问题
- 邹捷,http://expert.csdn.net/Expert/topic/2925/2925491.xml?temp=.1438715的帖子你也不能解答吗?只是个概念问题啊!
- sql语句问题
- 救命啊,为社么总报@i附近有错误,两种写法
- SQL简单查询语句问题!
- help me!!!!!!!!!!!!!!!!
- 谢谢,健入exp username/password@服务名 query='"where to_char(riqi,'YY-MM-DD')='01-04-01'"'仍提示列没有发现
- 我写的全文索引的存储过程,欢迎大家指导
- 怎么合并这样的两个表???????????
--如何将exec执行结果放入变量中? declare @num int, @sql nvarchar(4000)
set @sql= 'select @a=count(*) from tableName '
exec sp_executesql @sql,N '@a int output ',@num output
select @num 大概这样,楼主的语句有很多问题
declare @s2 varchar(4000),@s3 nvarchar(4000)
set @s2=''
set @s3=''
set @s3='select 'S2'='''+@S2+'''+RTRIM(ItemName)
FROM (select Distinct ItemName from TAB1) B
GROUP BY ItemName' exec(@s3)
declare @s2 varchar(4000),@s3 nvarchar(4000)
set @s2=''
set @s3=''
set @s3='select @S2=isnull(@S2,'''')+RTRIM(ItemName)
FROM (select Distinct ItemName from TAB1) B
GROUP BY ItemName' exec @s3,N'@s2 varchar(4000) output' ,@s2 outputselect @s2
-----不要用Execdeclare @s2 varchar(4000)
set @s2='' select @S2=@S2+RTRIM(ItemName)
FROM (select Distinct ItemName from TAB1) B
GROUP BY ItemNameselect @s2
select @S2=@S2+RTRIM(ItemName)
FROM (select Distinct ItemName from TAB1) B
GROUP BY ItemName
你当然没声明
你看来要写循环的!
2.使用sp_executesql来执行,并声明变量,同时需要将@s3定义为nvarchar,因为sp_executesql只对nvarchar有效
参照:
declare @s2 varchar(400),@s3 nvarchar(4000)
set @s2=''
set @s3=''
set @s3='select @S2=@S2+RTRIM(name)
FROM (select Distinct name from sys.objects) B
GROUP BY name '
print @s3
exec sp_executesql @s3
,N'@S2 varchar(400)'
,@s2
3.要查看信息,那么需要select出来
参照:
declare @s2 varchar(400),@s3 nvarchar(4000)
set @s2=''
set @s3=''
set @s3='select @S2=@S2+RTRIM(name)
FROM (select Distinct name from sys.objects) B
GROUP BY name select @s2'
print @s3
exec sp_executesql @s3
,N'@S2 varchar(400)'
,@s2问题已经解决!
declare @Tmp nvarchar(110),@id int,@sd int
set @sd=3
set @Tmp = 'select @id2=Employeeid from Employees where Employeeid='+ cast(@sd as varchar)
print @tmp
exec sp_executesql @Tmp,N'@id2 int output', @id output
if isnull(@id,0) <> 0
select @id
else
select '没有找到'
declare @s2 varchar(4000),@s3 nvarchar(4000),@curzt char(10)
set @curzt='200708'
set @s2=''
set @s3=''
set @s3='select @S2=isnull(@S2,'''')+'''+',['+'''+RTRIM(ItemName)+'''+']=max(CASE ItemName WHEN '''+'+RTRIM(ItemName)+'''+' THEN ItemValue ELSE space(10) END)'''+
' FROM (select Distinct ItemName from StaffExtendInfo'+@CurZT+') B
GROUP BY ItemName'exec sp_executesql @s3,N'@S2 Varchar(4000) output',@s2 outputselect @s2只是上面的‘号太多,有没办法简化?
马上结贴。