if exists(select 1 from sysobjects where name = 'proc_test') drop proc proc_test go create proc proc_test @tableNmae varchar(50), --输入参数(要查询的表名) @wheresql varchar(300), --输入参数(查询的条件要加"and") @sum int output --输出参数(查询某个表中) as declare @rowSumSql nvarchar(2000),@ParmDefinition nvarchar(200); set @rowSumSql = N'select @sumx = count(1) from ' + @tableNmae + ' where 1 = 1 '+@wheresql; --查询的SQL语句 print @rowSumSql set @ParmDefinition = N'@sumx int output'; --定义查询SQL语句的参数类型 --调用执行字符串的系统存储过程,并接收SQL语句中参数的值 exec sp_executesql @rowSumSql,@ParmDefinition,@sumx = @sum output go ------------执行存储过程--------------------- declare @rowsum int exec proc_test @tableNmae='tb_GoodsBasicInfo',@wheresql='and 2=2',@sum=@rowsum output select @rowsum