求一句sql语句的写法??

henry_cn 2003-08-26 02:20:32
在存储过程中

DECLARE @recordNum int
SELECT @recordNum COUNT(*) From News WHERE csize > 70
print @recordNum

我想改为where子句是可变的如:

DECLARE @sql nvarchar(250)
DECLARE @sqlStr nvarchar(50)
DECLARE @recordNum int

SET @sqlstr = ' csize > 70'
SET @sql = 'SELECT @recordNum = COUNT(*) From News WHERE' + @sqlStr
EXEC sp_executesql @sql
print @recordNum

运行时出错,请问大虾该如何写??
...全文
34 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
henry_cn 2003-08-26
  • 打赏
  • 举报
回复

DECLARE @sql nvarchar(250)
DECLARE @sqlStr nvarchar(50)
DECLARE @recordNum int

SET @sqlstr = ' csize > 70'
SET @sql = 'SELECT COUNT(*) From News WHERE' + @sqlStr
EXEC sp_executesql @sql


也就是怎么把EXEC sp_executesql @sql的结果赋给@recordNum
henry_cn 2003-08-26
  • 打赏
  • 举报
回复
但是我在下面的存储过程中还要用@recordNum这个变量
myhero811104 2003-08-26
  • 打赏
  • 举报
回复
你的@recordnum是在存储过程中声明的,在执行拼成的Sql字符串中是不认这个的,更无法对他赋值,可以在Sql字符串中声明
DECLARE @sql nvarchar(250)
DECLARE @sqlStr nvarchar(50)
begin
SET @sqlstr = ' a < 70'
SET @sql = 'declare @recordNum int
SELECT @recordNum = COUNT(*) From t1 WHERE ' + @sqlStr
+ '
print @recordNum'
EXEC sp_executesql @sql
zarge 2003-08-26
  • 打赏
  • 举报
回复
print isnull(@recordnum, 0)
henry_cn 2003-08-26
  • 打赏
  • 举报
回复
smallroad(无名),为什么我print @recordNum时,没有值显示??
CrazyFor 2003-08-26
  • 打赏
  • 举报
回复
参考:

Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = count(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
smallroad 2003-08-26
  • 打赏
  • 举报
回复
SET @sqlstr = ' csize > 70'
SET @sql = 'SELECT @recordNum = COUNT(*) From News WHERE' + @sqlStr

return EXEC (@sql)

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧