日期:2014-05-18  浏览次数:20393 次

存储过程问题,哪位好心的朋友帮忙看看,急~~~~~~~~~~~~~~~~~
我有一个存储过程,一个参数指定要操作的表名,一个指定条件
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 ' + @condition

EXEC sp_executesql @sql, N'@count INT OUTPUT', @count=@RecordCount OUTPUT

go

------解决方案--------------------
随手敲的,未测试.



SQL code
DECLARE @sql NVARCHAR(1000),@count INT
SET @sql=N'SELECT @count=COUNT(*) FROM ' + @tableName + ' WHERE ' + @condation
EXEC 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