日期:2014-05-17  浏览次数:20584 次

sql server存储过程赋值问题
关于exec(sql语句)赋值问题,

DECLARE @count int, @sql VARCHAR(1000), @flag VARCHAR(20)
SET @flag=SUBSTRING(@rwzt, CHARINDEX('_', @rwzt)+1, len(@rwzt))

SET @sql = 'SELECT @COUNT = COUNT(xx) from xxx WHERE delflg=''' + @flag+''''
SET @count = EXEC(@sql)


我想讲EXEC(@sql)执行的结果赋值给count,因为count在接下来的过程中,要做判断, 但是现在保存存储过程时报错说
[Err] 42000 - [SQL Server]关键字 'EXEC' 附近有语法错误。
哪位大侠遇到过,请指教,坐等
sql?server 2005 存储 赋值

------解决方案--------------------
  set @num=N'select @b=count(*) from '+ @tablename
  exec sp_executesql @num,N'@b int output',@b output

------解决方案--------------------
DECLARE @count int, @sql NVARCHAR(1000), @flag VARCHAR(20), @rwzt VARCHAR(2000)
SET @flag=SUBSTRING(@rwzt, CHARINDEX('_', @rwzt)+1, len(@rwzt))
         
SET @sql = N'SELECT @COUNT = COUNT(xx) from xxx WHERE delflg=@flag'
EXEC sp_executesql @sql, N'@COUNT INT OUTPUT, @flag varchar(20)', @count OUTPUT, @flag

------解决方案--------------------
引用:
Quote: 引用:

  set @num=N'select @b=count(*) from '+ @tablename
  exec sp_executesql @num,N'@b int output',@b output

那我上面要怎么修改才行?
楼下神速改好了。。。
------解决方案--------------------
引用:
Err] 42000 - [SQL Server]过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

我想让这个存储过程执行时,不需要传参的。

楼主的@sql参数必需是nvarchar类型。