当前位置:K88软件开发文章中心编程语言SQLSQL01 → 文章内容

sp_executeSQL解决动态生成的sql语句中查询结果的总数

减小字体 增大字体 作者:wangsdong     来源:asp编程网  发布时间:2018-12-30 9:14:48

/* 功能:sp_executeSQL解决动态生成的sql语句中查询结果的总数 
*/
/* 
开发:www.K88.NET(asp编程网) */
/* 作者:wangsdong */
/* */

平常的查询某张表的数据,通常的存储过程是这样写的

create PROCEDURE test @PageCount int = 0 outputASBEGIN SET NOCOUNT ON
SELECT @PageCount = count(*) FROM admin return @PageCountEND
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)


但如果存储过程中的sql语句是根据不同的条件生成,那使用上面的方法就没法实现了,这里就需要使用sql server中的sp_executeSQL函数来实现。具体如下:

create PROCEDURE [dbo].[test] @pid int = 1, @PageCount int = 0 outputASBEGIN 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 @PageCountEND
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)


 



sp_executeSQL解决动态生成的sql语句中查询结果的总数