现在我在为一个数据库“A”想写一个存储过程,其中调用的时候,可以指定一个用户表名,然后可以返回这个表的记录数,而且记录数必须以输出参数的形式返回,这该怎么写啊?急啊! 请各位指教啊!
例如就象下面这样:
sp_getRows tableA , @outResult
然后存储过程可以把 tableA 的记录数通过 @outResult 返回出来, 该怎么写?我想法是:写这个东西,拼接字符串肯定是要的,但是以前写拼接的时候一般都是简单执行一些无返回的语句;现在肯定是要从拼接的语句中获得内容,例如 select count(*) from + @tableName , 现在就要把 count(*)获得出来,给存储过程中的一个参数 , 这该怎么办呢??
或者我这种想法不对? 做这个事情还有什么其他办法? 请指点一下啊!!
/*
获取指定表的记录数
调用:
declare @outResult int
exec sp_getRows tableA , @outResult out
select @outResult
*/
create procedure sp_getRows
@tbName varchar(20), --表名
@outResult int output --记录数
as
declare @sql nvarchar(1000)
set @sql=select @cnt=count(1) from +@tbName
exec sp_executesql @sql,N@cnt int output,@outResult out
go
create procedure sp_getRows
@tabname nvarchar(100),
@outResult int out
as
begin
declare @s nvarchar(8000)
set @s = Nselect @outResult=count(*) from +@tabname
exec sp_executesql @s,
N@outResul int out,
@outResul out
end