技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 数据库 > sqlserver > 正文

求sql分页存储过程,入参为sql语句,页码,页数;返回json格式记录集

来源: 技术CTO 阅读:

如题,例如sql语句为
sql="SELECT DISTINCT   WFBL.Program AS [Program],   WFPR.PRG_DES AS [Program Description],   WFBL.DOC_CODE AS [Doc Code],   WFBL.WF_CODE AS [Work Flow Code],  WFBL.WF_STEP_Previous AS [Previous Step],  WFBL.WF_STEP AS [Work Step],   WFBL.wf_step_next AS [Next Step],   WFBL.STATUS AS [Status],    WFBL.REMARK AS [Remark],  WFBL.WF_CONTENT AS [Content],    WFBL.Commit_User AS [Commit User],  HM.USERNAME AS [Commit User Name],  HM.UserTel AS [User Tel],  WFBL.Commit_Date AS [Commit Date],    DATEDIFF(Hour, WFBL.Approve_Time,GETDATE()) AS [Residence Time(Hour)]   FROM WFBILLM WFBL(NOLOCK)    LEFT JOIN WFPRGFLM WFPR(nolock) ON WFBL.Program=WFPR.PRG_CODE   LEFT JOIN OPPHANM HM(nolock) ON WFBL.commit_user=HM.USERCODE   INNER JOIN DBO.fun_WF_TODO_TASK('xfsds') TODO ON WFBL.DOC_CODE = TODO.DOC_CODE AND WFBL.PROGRAM = TODO.PROGRAM  AND  (1=1)  And  (1=1)  And  (1=1)  And  (1=1)  ORDER BY WFBL.Program"
页码为第10页,每页20条记录,最后我想返回json格式的记录集.还有sql语句是任意的,可以包含order by字句
请问能不能实现啊?



              
sql server 2016支持查询出来的结果转换成json 哦~ 
但是公司使用的是2008版本的哦...



CREATE PROCEDURE [dbo].[P_Sys_PagesList]
@strSQL nvarchar(4000)=NULL,--查询SQL语句
@OrderBy nvarchar(100)=NULL,--排序字段
@OrderByStatus varchar(20),-- desc asc
@PageIndex int ,--当前页码
@PageSize int--每页多少条

AS
BEGIN
DECLARE  
@beginnumstr VARCHAR(10),
@endnumstr VARCHAR(10)

set @beginnumstr=Convert(varchar(10),(@PageIndex-1)*@PageSize+1);
set @endnumstr= Convert(varchar(10),@PageIndex*@PageSize);
if @OrderBy=''
begin
set @OrderBy='(select 0)'
end;
exec(
'with list as(
SELECT ROW_NUMBER() OVER(order by '+@OrderBy+' '+@OrderByStatus+') AS num,*
FROM ('+@strSQL+') T
)
select (select COUNT(1) from list) as Count,* from list
where num between '+@beginnumstr+' and '+@endnumstr
   )
END
这是sql语句
转换json可以把返回的table用Newtonsoft.Json转化下
或者转xml sql 有个for xml的转换
1.这种情况,建议在程序中进行转化;
2.可以使用动态的拼接的那种形式,毕竟 2016 以上才支持;

sqlserver2016之前确建议在程序中处理json.
因为数据库转换,需要使用字符拼接操作,效率太低.

如果实在需要在数据库端出json,那你在数据库上集成clr函数(其实还是程序)
用clr函数处理输出json

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^