一些procedure的代码例子

set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[aspnet_Membership_CreateUser]
    
@ApplicationName                        nvarchar(256),
    
@UserName                               nvarchar(256),
    
@Password                               nvarchar(128),
    
@PasswordSalt                           nvarchar(128),
    
@Email                                  nvarchar(256),
    
@PasswordQuestion                       nvarchar(256),
    
@PasswordAnswer                         nvarchar(128),
    
@IsApproved                             bit,
    
@CurrentTimeUtc                         datetime,
    
@CreateDate                             datetime = NULL,
    
@UniqueEmail                            int      = 0,
    
@PasswordFormat                         int      = 0,
    
@UserId                                 uniqueidentifier OUTPUT
AS
BEGIN
    
DECLARE @ApplicationId uniqueidentifier
    
SELECT  @ApplicationId = NULL

    
DECLARE @NewUserId uniqueidentifier
    
SELECT @NewUserId = NULL

    
DECLARE @IsLockedOut bit
    
SET @IsLockedOut = 0

    
DECLARE @LastLockoutDate  datetime
    
SET @LastLockoutDate = CONVERTdatetime'17540101'112 )

    
DECLARE @FailedPasswordAttemptCount int
    
SET @FailedPasswordAttemptCount = 0

    
DECLARE @FailedPasswordAttemptWindowStart  datetime
    
SET @FailedPasswordAttemptWindowStart = CONVERTdatetime'17540101'112 )

    
DECLARE @FailedPasswordAnswerAttemptCount int
    
SET @FailedPasswordAnswerAttemptCount = 0

    
DECLARE @FailedPasswordAnswerAttemptWindowStart  datetime
    
SET @FailedPasswordAnswerAttemptWindowStart = CONVERTdatetime'17540101'112 )

    
DECLARE @NewUserCreated bit
    
DECLARE @ReturnValue   int
    
SET @ReturnValue = 0

    
DECLARE @ErrorCode     int
    
SET @ErrorCode = 0

    
DECLARE @TranStarted   bit
    
SET @TranStarted = 0

    
IF@@TRANCOUNT = 0 )
    
BEGIN
        
BEGIN TRANSACTION
        
SET @TranStarted = 1
    
END
    
ELSE
        
SET @TranStarted = 0

    
EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName@ApplicationId OUTPUT

    
IF@@ERROR <> 0 )
    
BEGIN
        
SET @ErrorCode = -1
        
GOTO Cleanup
    
END

    
SET @CreateDate = @CurrentTimeUtc

    
SELECT  @NewUserId = UserId FROM dbo.aspnet_Users WHERE LOWER(@UserName= LoweredUserName AND @ApplicationId = ApplicationId
    
IF ( @NewUserId IS NULL )
    
BEGIN
        
SET @NewUserId = @UserId
        
EXEC @ReturnValue = dbo.aspnet_Users_CreateUser @ApplicationId@UserName0@CreateDate@NewUserId OUTPUT
        
SET @NewUserCreated = 1
    
END
    
ELSE
    
BEGIN
        
SET @NewUserCreated = 0
        
IF@NewUserId <> @UserId AND @UserId IS NOT NULL )
        
BEGIN
            
SET @ErrorCode = 6
            
GOTO Cleanup
        
END
    
END

    
IF@@ERROR <> 0 )
    
BEGIN
        
SET @ErrorCode = -1
        
GOTO Cleanup
    
END

    
IF@ReturnValue = -1 )
    
BEGIN
        
SET @ErrorCode = 10
        
GOTO Cleanup
    
END

    
IF ( EXISTS ( SELECT UserId
                  
FROM   dbo.aspnet_Membership
                  
WHERE  @NewUserId = UserId ) )
    
BEGIN
        
SET @ErrorCode = 6
        
GOTO Cleanup
    
END

    
SET @UserId = @NewUserId

    
IF (@UniqueEmail = 1)
    
BEGIN
        
IF (EXISTS (SELECT *
                    
FROM  dbo.aspnet_Membership m WITH ( UPDLOCK, HOLDLOCK )
                    
WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email)))
        
BEGIN
            
SET @ErrorCode = 7
            
GOTO Cleanup
        
END
    
END

    
IF (@NewUserCreated = 0)
    
BEGIN
        
UPDATE dbo.aspnet_Users
        
SET    LastActivityDate = @CreateDate
        
WHERE  @UserId = UserId
        
IF@@ERROR <> 0 )
        
BEGIN
            
SET @ErrorCode = -1
            
GOTO Cleanup
        
END
    
END

    
INSERT INTO dbo.aspnet_Membership
                ( ApplicationId,
                  UserId,
                  Password,
                  PasswordSalt,
                  Email,
                  LoweredEmail,
                  PasswordQuestion,
                  PasswordAnswer,
                  PasswordFormat,
                  IsApproved,
                  IsLockedOut,
                  CreateDate,
                  LastLoginDate,
                  LastPasswordChangedDate,
                  LastLockoutDate,
                  FailedPasswordAttemptCount,
                  FailedPasswordAttemptWindowStart,
                  FailedPasswordAnswerAttemptCount,
                  FailedPasswordAnswerAttemptWindowStart )
         
VALUES ( @ApplicationId,
                  
@UserId,
                  
@Password,
                  
@PasswordSalt,
                  
@Email,
                  
LOWER(@Email),
                  
@PasswordQuestion,
                  
@PasswordAnswer,
                  
@PasswordFormat,
                  
@IsApproved,
                  
@IsLockedOut,
                  
@CreateDate,
                  
@CreateDate,
                  
@CreateDate,
                  
@LastLockoutDate,
                  
@FailedPasswordAttemptCount,
                  
@FailedPasswordAttemptWindowStart,
                  
@FailedPasswordAnswerAttemptCount,
                  
@FailedPasswordAnswerAttemptWindowStart )

    
IF@@ERROR <> 0 )
    
BEGIN
        
SET @ErrorCode = -1
        
GOTO Cleanup
    
END

    
IF@TranStarted = 1 )
    
BEGIN
        
SET @TranStarted = 0
        
COMMIT TRANSACTION
    
END

    
RETURN 0

Cleanup:

    
IF@TranStarted = 1 )
    
BEGIN
        
SET @TranStarted = 0
        
ROLLBACK TRANSACTION
    
END

    
RETURN @ErrorCode

END



set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[aspnet_Membership_CreateUser]
    
@ApplicationName                        nvarchar(256),
    
@UserName                               nvarchar(256),
    
@Password                               nvarchar(128),
    
@PasswordSalt                           nvarchar(128),
    
@Email                                  nvarchar(256),
    
@PasswordQuestion                       nvarchar(256),
    
@PasswordAnswer                         nvarchar(128),
    
@IsApproved                             bit,
    
@CurrentTimeUtc                         datetime,
    
@CreateDate                             datetime = NULL,
    
@UniqueEmail                            int      = 0,
    
@PasswordFormat                         int      = 0,
    
@UserId                                 uniqueidentifier OUTPUT
AS
BEGIN
    
DECLARE @ApplicationId uniqueidentifier
    
SELECT  @ApplicationId = NULL

    
DECLARE @NewUserId uniqueidentifier
    
SELECT @NewUserId = NULL

    
DECLARE @IsLockedOut bit
    
SET @IsLockedOut = 0

    
DECLARE @LastLockoutDate  datetime
    
SET @LastLockoutDate = CONVERTdatetime'17540101'112 )

    
DECLARE @FailedPasswordAttemptCount int
    
SET @FailedPasswordAttemptCount = 0

    
DECLARE @FailedPasswordAttemptWindowStart  datetime
    
SET @FailedPasswordAttemptWindowStart = CONVERTdatetime'17540101'112 )

    
DECLARE @FailedPasswordAnswerAttemptCount int
    
SET @FailedPasswordAnswerAttemptCount = 0

    
DECLARE @FailedPasswordAnswerAttemptWindowStart  datetime
    
SET @FailedPasswordAnswerAttemptWindowStart = CONVERTdatetime'17540101'112 )

    
DECLARE @NewUserCreated bit
    
DECLARE @ReturnValue   int
    
SET @ReturnValue = 0

    
DECLARE @ErrorCode     int
    
SET @ErrorCode = 0

    
DECLARE @TranStarted   bit
    
SET @TranStarted = 0

    
IF@@TRANCOUNT = 0 )
    
BEGIN
        
BEGIN TRANSACTION
        
SET @TranStarted = 1
    
END
    
ELSE
        
SET @TranStarted = 0

    
EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName@ApplicationId OUTPUT

    
IF@@ERROR <> 0 )
    
BEGIN
        
SET @ErrorCode = -1
        
GOTO Cleanup
    
END

    
SET @CreateDate = @CurrentTimeUtc

    
SELECT  @NewUserId = UserId FROM dbo.aspnet_Users WHERE LOWER(@UserName= LoweredUserName AND @ApplicationId = ApplicationId
    
IF ( @NewUserId IS NULL )
    
BEGIN
        
SET @NewUserId = @UserId
        
EXEC @ReturnValue = dbo.aspnet_Users_CreateUser @ApplicationId@UserName0@CreateDate@NewUserId OUTPUT
        
SET @NewUserCreated = 1
    
END
    
ELSE
    
BEGIN
        
SET @NewUserCreated = 0
        
IF@NewUserId <> @UserId AND @UserId IS NOT NULL )
        
BEGIN
            
SET @ErrorCode = 6
            
GOTO Cleanup
        
END
    
END

    
IF@@ERROR <> 0 )
    
BEGIN
        
SET @ErrorCode = -1
        
GOTO Cleanup
    
END

    
IF@ReturnValue = -1 )
    
BEGIN
        
SET @ErrorCode = 10
        
GOTO Cleanup
    
END

    
IF ( EXISTS ( SELECT UserId
                  
FROM   dbo.aspnet_Membership
                  
WHERE  @NewUserId = UserId ) )
    
BEGIN
        
SET @ErrorCode = 6
        
GOTO Cleanup
    
END

    
SET @UserId = @NewUserId

    
IF (@UniqueEmail = 1)
    
BEGIN
        
IF (EXISTS (SELECT *
                    
FROM  dbo.aspnet_Membership m WITH ( UPDLOCK, HOLDLOCK )
                    
WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email)))
        
BEGIN
            
SET @ErrorCode = 7
            
GOTO Cleanup
        
END
    
END

    
IF (@NewUserCreated = 0)
    
BEGIN
        
UPDATE dbo.aspnet_Users
        
SET    LastActivityDate = @CreateDate
        
WHERE  @UserId = UserId
        
IF@@ERROR <> 0 )
        
BEGIN
            
SET @ErrorCode = -1
            
GOTO Cleanup
        
END
    
END

    
INSERT INTO dbo.aspnet_Membership
                ( ApplicationId,
                  UserId,
                  Password,
                  PasswordSalt,
                  Email,
                  LoweredEmail,
                  PasswordQuestion,
                  PasswordAnswer,
                  PasswordFormat,
                  IsApproved,
                  IsLockedOut,
                  CreateDate,
                  LastLoginDate,
                  LastPasswordChangedDate,
                  LastLockoutDate,
                  FailedPasswordAttemptCount,
                  FailedPasswordAttemptWindowStart,
                  FailedPasswordAnswerAttemptCount,
                  FailedPasswordAnswerAttemptWindowStart )
         
VALUES ( @ApplicationId,
                  
@UserId,
                  
@Password,
                  
@PasswordSalt,
                  
@Email,
                  
LOWER(@Email),
                  
@PasswordQuestion,
                  
@PasswordAnswer,
                  
@PasswordFormat,
                  
@IsApproved,
                  
@IsLockedOut,
                  
@CreateDate,
                  
@CreateDate,
                  
@CreateDate,
                  
@LastLockoutDate,
                  
@FailedPasswordAttemptCount,
                  
@FailedPasswordAttemptWindowStart,
                  
@FailedPasswordAnswerAttemptCount,
                  
@FailedPasswordAnswerAttemptWindowStart )

    
IF@@ERROR <> 0 )
    
BEGIN
        
SET @ErrorCode = -1
        
GOTO Cleanup
    
END

    
IF@TranStarted = 1 )
    
BEGIN
        
SET @TranStarted = 0
        
COMMIT TRANSACTION
    
END

    
RETURN 0

Cleanup:

    
IF@TranStarted = 1 )
    
BEGIN
        
SET @TranStarted = 0
        
ROLLBACK TRANSACTION
    
END

    
RETURN @ErrorCode

END



set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[aspnet_Membership_ChangePasswordQuestionAndAnswer]
    
@ApplicationName       nvarchar(256),
    
@UserName              nvarchar(256),
    
@NewPasswordQuestion   nvarchar(256),
    
@NewPasswordAnswer     nvarchar(128)
AS
BEGIN
    
DECLARE @UserId uniqueidentifier
    
SELECT  @UserId = NULL
    
SELECT  @UserId = u.UserId
    
FROM    dbo.aspnet_Membership m, dbo.aspnet_Users u, dbo.aspnet_Applications a
    
WHERE   LoweredUserName = LOWER(@UserNameAND
            u.ApplicationId 
= a.ApplicationId  AND
            
LOWER(@ApplicationName= a.LoweredApplicationName AND
            u.UserId 
= m.UserId
    
IF (@UserId IS NULL)
    
BEGIN
        
RETURN(1)
    
END

    
UPDATE dbo.aspnet_Membership
    
SET    PasswordQuestion = @NewPasswordQuestion, PasswordAnswer = @NewPasswordAnswer
    
WHERE  UserId=@UserId
    
RETURN(0)
END


set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[aspnet_Membership_UpdateUser]
    
@ApplicationName      nvarchar(256),
    
@UserName             nvarchar(256),
    
@Email                nvarchar(256),
    
@Comment              ntext,
    
@IsApproved           bit,
    
@LastLoginDate        datetime,
    
@LastActivityDate     datetime,
    
@UniqueEmail          int,
    
@CurrentTimeUtc       datetime
AS
BEGIN
    
DECLARE @UserId uniqueidentifier
    
DECLARE @ApplicationId uniqueidentifier
    
SELECT  @UserId = NULL
    
SELECT  @UserId = u.UserId, @ApplicationId = a.ApplicationId
    
FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m
    
WHERE   LoweredUserName = LOWER(@UserNameAND
            u.ApplicationId 
= a.ApplicationId  AND
            
LOWER(@ApplicationName= a.LoweredApplicationName AND
            u.UserId 
= m.UserId

    
IF (@UserId IS NULL)
        
RETURN(1)

    
IF (@UniqueEmail = 1)
    
BEGIN
        
IF (EXISTS (SELECT *
                    
FROM  dbo.aspnet_Membership WITH (UPDLOCK, HOLDLOCK)
                    
WHERE ApplicationId = @ApplicationId  AND @UserId <> UserId AND LoweredEmail = LOWER(@Email)))
        
BEGIN
            
RETURN(7)
        
END
    
END

    
DECLARE @TranStarted   bit
    
SET @TranStarted = 0

    
IF@@TRANCOUNT = 0 )
    
BEGIN
        
BEGIN TRANSACTION
        
SET @TranStarted = 1
    
END
    
ELSE
    
SET @TranStarted = 0

    
UPDATE dbo.aspnet_Users WITH (ROWLOCK)
    
SET
         LastActivityDate 
= @LastActivityDate
    
WHERE
       
@UserId = UserId

    
IF@@ERROR <> 0 )
        
GOTO Cleanup

    
UPDATE dbo.aspnet_Membership WITH (ROWLOCK)
    
SET
         Email            
= @Email,
         LoweredEmail     
= LOWER(@Email),
         Comment          
= @Comment,
         IsApproved       
= @IsApproved,
         LastLoginDate    
= @LastLoginDate
    
WHERE
       
@UserId = UserId

    
IF@@ERROR <> 0 )
        
GOTO Cleanup

    
IF@TranStarted = 1 )
    
BEGIN
    
SET @TranStarted = 0
    
COMMIT TRANSACTION
    
END

    
RETURN 0

Cleanup:

    
IF@TranStarted = 1 )
    
BEGIN
        
SET @TranStarted = 0
        
ROLLBACK TRANSACTION
    
END

    
RETURN -1
END


set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[aspnet_Membership_GetAllUsers]
    
@ApplicationName       nvarchar(256),
    
@PageIndex             int,
    
@PageSize              int
AS
BEGIN
    
DECLARE @ApplicationId uniqueidentifier
    
SELECT  @ApplicationId = NULL
    
SELECT  @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName= LoweredApplicationName
    
IF (@ApplicationId IS NULL)
        
RETURN 0


    
-- Set the page bounds
    DECLARE @PageLowerBound int
    
DECLARE @PageUpperBound int
    
DECLARE @TotalRecords   int
    
SET @PageLowerBound = @PageSize * @PageIndex
    
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound

    
-- 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_Membership m, dbo.aspnet_Users u
    
WHERE  u.ApplicationId = @ApplicationId AND u.UserId = m.UserId
    
ORDER BY u.UserName

    
SELECT @TotalRecords = @@ROWCOUNT

    
SELECT u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,
            m.CreateDate,
            m.LastLoginDate,
            u.LastActivityDate,
            m.LastPasswordChangedDate,
            u.UserId, m.IsLockedOut,
            m.LastLockoutDate
    
FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p
    
WHERE  u.UserId = p.UserId AND u.UserId = m.UserId AND
           p.IndexId 
>= @PageLowerBound AND p.IndexId <= @PageUpperBound
    
ORDER BY u.UserName
    
RETURN @TotalRecords
END
posted @ 2008-01-08 11:09  N/A2011  阅读(354)  评论(0编辑  收藏  举报