ALTERPROCEDURE dbo.aspnet_Profile_GetProfiles @ApplicationNameNVARCHAR(256), @ProfileAuthOptionsINT, @PageIndexINT, @PageSizeINT, @TimeZoneAdjustmentINT, @UserNameToMatchNVARCHAR(256) =NULL, @InactiveSinceDateDATETIME=NULL AS BEGIN DECLARE@ApplicationIdUNIQUEIDENTIFIER SELECT@ApplicationId=NULL SELECT@ApplicationId= ApplicationId FROM aspnet_Applications WHERELOWER(@ApplicationName) = LoweredApplicationName -----如果@ApplicationId为空直接返回,好象少了 SELECT 0 这一步,所以也就没用 BEGIN 和 END IF (@ApplicationIdISNULL) RETURN IF ((NOT(@InactiveSinceDateISNULL)) AND (@InactiveSinceDate>CONVERT(DATETIME, '17540101', 112)) AND (@InactiveSinceDate<CONVERT(DATETIME, '99980101', 112))) SELECT@InactiveSinceDate=DATEADD(n, -@TimeZoneAdjustment, @InactiveSinceDate) --如果@InactiveSinceDate不为空且在一定范围内,则为@InactiveSinceDate设置新的值 -- Set the page bounds ---设置页面绑定 DECLARE@PageLowerBoundINT DECLARE@PageUpperBoundINT DECLARE@TotalRecordsINT SET@PageLowerBound=@PageSize*@PageIndex SET@PageUpperBound=@PageSize-1+@PageLowerBound /**//*即显示数据的时候只显示从@PageLowerBound开始到@PageUpperBound的记录数*/ -- Create a temp table TO store the select results --创建一个临时表来保存数据,自动增长的列是为了分页而设计的 CREATETABLE #PageIndexForUsers ( IndexId intIDENTITY (0, 1) NOTNULL, UserId UNIQUEIDENTIFIER ) -- Insert into our temp table ---为临时表插入数据 INSERTINTO #PageIndexForUsers (UserId) SELECT u.UserId FROM dbo.aspnet_Users u, dbo.aspnet_Profile p WHERE ApplicationId =@ApplicationId AND u.UserId = p.UserId AND (@InactiveSinceDateISNULLOR LastActivityDate <=@InactiveSinceDate) AND ( (@ProfileAuthOptions=2) OR (@ProfileAuthOptions=0AND IsAnonymous =1) OR (@ProfileAuthOptions=1AND IsAnonymous =0) ) AND (@UserNameToMatchISNULLOR LoweredUserName LIKELOWER(@UserNameToMatch)) ORDERBY UserName /**//*现在没搞清楚的是这些条件,不明白条件的意思*/ SELECT u.UserName, u.IsAnonymous, u.LastActivityDate, p.LastUpdatedDate, DATALENGTH(p.PropertyNames) +DATALENGTH(p.PropertyValuesString) +DATALENGTH(p.PropertyValuesBinary) /**//*DATALENGTH 返回任何表达式所占用的字节数。*/ FROM dbo.aspnet_Users u, dbo.aspnet_Profile p, #PageIndexForUsers i WHERE u.UserId = p.UserId AND p.UserId = i.UserId AND i.IndexId >=@PageLowerBoundAND i.IndexId <=@PageUpperBound SELECTCOUNT(*) FROM #PageIndexForUsers ---计算临时表的记录数 DROPTABLE #PageIndexForUsers --删除临时表 /**//*既然不用话为什么还要弄一个分页的出来,不知道干什么用来着,不过前面有这个参数那就肯定有用了*/ END
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?