随笔 - 170,  文章 - 30,  评论 - 35,  阅读 - 11万
ALTER  PROCEDURE dbo.aspnet_Profile_GetProfiles
    
@ApplicationName        NVARCHAR(256),
    
@ProfileAuthOptions     INT,
    
@PageIndex              INT,
    
@PageSize               INT,
    
@TimeZoneAdjustment     INT,
    
@UserNameToMatch        NVARCHAR(256= NULL,
    
@InactiveSinceDate      DATETIME      = NULL
AS
BEGIN
    
DECLARE @ApplicationId UNIQUEIDENTIFIER
    
SELECT  @ApplicationId = NULL
    
SELECT  @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName= LoweredApplicationName
    
-----如果@ApplicationId为空直接返回,好象少了 SELECT 0 这一步,所以也就没用 BEGIN 和 END 
    IF (@ApplicationId IS NULL)
        
RETURN

    
IF ((NOT(@InactiveSinceDate IS NULL)) 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 @PageLowerBound INT
    
DECLARE @PageUpperBound INT
    
DECLARE @TotalRecords   INT
    
SET @PageLowerBound = @PageSize * @PageIndex
    
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
    
/*即显示数据的时候只显示从@PageLowerBound开始到@PageUpperBound的记录数*/
    
-- Create a temp table TO store the select results
    --创建一个临时表来保存数据,自动增长的列是为了分页而设计的
    CREATE TABLE #PageIndexForUsers
    (
        IndexId 
int IDENTITY (01NOT NULL,
        UserId 
UNIQUEIDENTIFIER
    )

    
-- Insert into our temp table
    ---为临时表插入数据
    INSERT INTO #PageIndexForUsers (UserId)
        
SELECT  u.UserId
        
FROM    dbo.aspnet_Users u, dbo.aspnet_Profile p
        
WHERE   ApplicationId = @ApplicationId
            
AND u.UserId = p.UserId
            
AND (@InactiveSinceDate IS NULL OR LastActivityDate <= @InactiveSinceDate)
            
AND (     (@ProfileAuthOptions = 2)
                   
OR (@ProfileAuthOptions = 0 AND IsAnonymous = 1)
                   
OR (@ProfileAuthOptions = 1 AND IsAnonymous = 0)
                 )
            
AND (@UserNameToMatch IS NULL OR LoweredUserName LIKE LOWER(@UserNameToMatch))
        
ORDER BY 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 >= @PageLowerBound AND i.IndexId <= @PageUpperBound

    
SELECT COUNT(*)
    
FROM   #PageIndexForUsers  ---计算临时表的记录数
    
    
DROP TABLE #PageIndexForUsers  --删除临时表
    /*既然不用话为什么还要弄一个分页的出来,不知道干什么用来着,不过前面有这个参数那就肯定有用了*/
END
posted on   MainIsUsed  阅读(438)  评论(0编辑  收藏  举报
编辑推荐:
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
阅读排行:
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?
< 2006年9月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示