0

ユーザー名に関連付けられたパスワードを返すSQLプロシージャを1つ作成しました。

SQL手順:

USE [C:\INETPUB\WWWROOT\ADDMARKER\MAP\MAP\APP_DATA\ASPNETDB.MDF]
GO
/****** Object:  StoredProcedure [dbo].[aspnet_Membership_EmailPassword]    Script Date: 10/18/2012 15:32:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[aspnet_Membership_EmailPassword] 
    -- Add the parameters for the stored procedure here
            (
            @UserName  nvarchar(256),
            @PasswordReturn nvarchar(128) out
            )
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
     DECLARE @UserId                                 uniqueidentifier
     DECLARE @Password                               nvarchar(128)
     DECLARE @Return_Password                         nvarchar(256)
     DECLARE @IsLockedOut                            bit
     DECLARE @ErrorCode     int
     SET @ErrorCode = 0

     DECLARE @TranStarted   bit
     SET @TranStarted = 0
      SET NOCOUNT ON;

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

    SELECT  @UserId = u.UserId,
            @Password = m.Password,
            @IsLockedOut = m.IsLockedOut

    FROM    dbo.aspnet_Users u, dbo.aspnet_Membership m WITH ( UPDLOCK )
    WHERE    u.UserId = m.UserId AND
            LOWER(@UserName) = u.LoweredUserName

     IF ( @@rowcount = 0 )
    BEGIN
        SET @ErrorCode = 1
    END

    IF( @IsLockedOut = 1 )
    BEGIN
        SET @ErrorCode = 99
    END
    IF(Not( @ErrorCode = 0) )
    set @PasswordReturn = 'Error in search'
       ELSE
       set @PasswordReturn = @Password
       RETURN @PasswordReturn
END

エラーが発生します

「メッセージ245、レベル16、状態1、プロシージャaspnet_Membership_EmailPassword、59行目nvarchar値「egt1egt」をデータ型intに変換するときに変換に失敗しました。」

その手順の実行時。

誰か助けてもらえますか?

ありがとう

4

1 に答える 1

1

Returnプロシージャの戻り値であるintのみを返すことができます。

プロシージャを終了すると、出力パラメータが自動的に返されるため、行を削除します

 RETURN @PasswordReturn 

出力パラメーターと戻り値の違いの詳細な説明については、http://msdn.microsoft.com/en-us/library/59x02y99 (v = vs.71).aspxを参照してください。

于 2012-10-18T12:51:00.407 に答える