我有一个存储过程,一个参数指定要操作的表名,一个指定条件
create PROCEDURE userPC
@tableName varchar(100),
@condition varchar(250),
@RecordCount int output
as
SET NOCOUNT ON --指示存储过程不返回查询影响的行数
SELECT @RecordCount = COUNT(*) FROM @tableName where @condition
go
在查询分析器里运行的时候出现如下错误,请哪位高手帮忙看看,谢谢!!!
////////////////////////////////////////////////
服务器: 消息 137,级别 15,状态 2,过程 userPC,行 8
必须声明变量 '@tableName'。
真的很急
------解决方案--------------------------------------------------------
呵呵 看错了 要这么写的,但是where @condition 是什么意思?
Declare @sql nvarchar(255)
set @sql= ' ';
set @sql='SELECT'+ @RecordCount+ '=COUNT(*) FROM'+ @tableName+ 'where' +@condition
exec(@sql)
------解决方案--------------------------------------------------------
- SQL code
create PROCEDURE userPC @tableName varchar(100), @condition varchar(250), @RecordCount int output as SET NOCOUNT ON --指示存储过程不返回查询影响的行数 DECLARE @sql NVARCHAR(100)SET @sql = N'SELECT @count=COUNT(*) FROM ' + @tableName + ' WHERE ' + @conditionEXEC sp_executesql @sql, N'@count INT OUTPUT', @count=@RecordCount OUTPUTgo
------解决方案--------------------------------------------------------
随手敲的,未测试.
- SQL code
DECLARE @sql NVARCHAR(1000),@count INTSET @sql=N'SELECT @count=COUNT(*) FROM ' + @tableName + ' WHERE ' + @condationEXEC sp_executeSQL @sql,N'@count INT OUTPUT',@count OUTPUT
------解决方案--------------------------------------------------------
- SQL code
CREATE PROC procName( @id INT, @x VARCHAR, @count INT OUTPUT)AS BEGIN SELECT * FROM tb WHERE id=@id AND v LIKE '%' + @x + '%' SELECT @count=@@ROWCOUNT END