/* 功能:sp_executeSQL解决动态生成的sql语句中查询结果的总数 */
/* 开发:www.aspbc.com(asp编程网) */
/* 作者:wangsdong */
/* 原创文章,转载请保留此信息,谢谢 */
平常的查询某张表的数据,通常的存储过程是这样写的
create PROCEDURE test @PageCount int = 0 output AS BEGIN SET NOCOUNT ON; SELECT @PageCount = count(*) FROM admin return @PageCount END(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
但如果存储过程中的sql语句是根据不同的条件生成,那使用上面的方法就没法实现了,这里就需要使用sql server中的sp_executeSQL函数来实现。具体如下:
create PROCEDURE [dbo].[test] @pid int = 1, @PageCount int = 0 output AS BEGIN SET NOCOUNT ON; DECLARE @sql2 nvarchar(200) SET @sql2='SELECT @PageCount = count(*) FROM admin where 1=1' IF @pid=1 SET @sql2=@sql2+' and is_show=1' exec sp_executeSQL @sql2,N'@PageCount int output', @PageCount output return @PageCount END(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)