簡體   English   中英

使用位從存儲過程返回布爾值

[英]Returning boolean value from a stored procedure using bit

這是我用於檢查電子郵件可用性的存儲過程的代碼。

ALTER PROCEDURE [dbo].[usp_CheckEmailMobile](@Name VARCHAR(50), @Email NVARCHAR(50), @Password NVARCHAR(50), @CountryCode INT, @Mobile VARCHAR(50), @Result BIT OUTPUT)
AS 
BEGIN 


IF EXISTS (SELECT COUNT (*) FROM AUser WHERE  [Email] = @Email AND [Mobile] = @Mobile) 


SELECT 'FALSE'; --Email &/or Mobile does not exist in database

ELSE
 --Insert the record & register the user 
INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile)  


END

如何將此SP的結果分配給@Result(其輸出參數)?

這是CS代碼:我要去哪里喝?

      protected void btnRegister_Click(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
        con.Open();



        SqlCommand Cmd = new SqlCommand("usp_CheckEmailMobile", con);
        Cmd.CommandType = CommandType.StoredProcedure;
        Cmd.CommandText = "Registration";
        Cmd.Parameters.AddWithValue("@Name", txtName.Text);
        Cmd.Parameters.AddWithValue("@Email", txtEmailAddress.Text);
        Cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
        Cmd.Parameters.AddWithValue("@CountryCode", ddlCountryCode.Text);
        Cmd.Parameters.AddWithValue("@Mobile", txtMobileNumber.Text);
        //Cmd.Parameters.Add("@Result", DbType.Boolean);
        SqlParameter sqlParam = new SqlParameter("@Result", DbType.Boolean);
        //sqlParam.ParameterName = "@Result";
        //sqlParam.DbType = DbType.Boolean;
        sqlParam.Direction = ParameterDirection.Output;
        Cmd.Parameters.Add(sqlParam);
        Cmd.ExecuteNonQuery();
        con.Close();
        Response.Write(Cmd.Parameters["@Result"].Value);

    }

經歷了這個,dint幫助... 如何從C#運行具有OUTPUT參數的存儲過程?

您只需將其設置為這樣的普通變量

    ALTER PROCEDURE [dbo].[usp_CheckEmailMobile](@Name VARCHAR(50), @Email NVARCHAR(50), @Password NVARCHAR(50), @CountryCode INT, @Mobile VARCHAR(50), @Result BIT OUTPUT)
    AS 
    BEGIN 


    IF EXISTS (SELECT COUNT (*) FROM AUser WHERE  [Email] = @Email AND [Mobile] = @Mobile) 
    BEGIN

    SELECT 'FALSE'; --Email &/or Mobile does not exist in database
    @Result = 0
    END
    ELSE
    BEGIN
     --Insert the record & register the user 
    INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile)  

    @Result = 1
    END

    END

對於服務器端代碼

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
            con.Open();

            SqlCommand Cmd = new SqlCommand("usp_CheckEmailMobile", con);
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Parameters.AddWithValue("@Name", txtName.Text);
            Cmd.Parameters.AddWithValue("@Email", txtEmailAddress.Text);
            Cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
            Cmd.Parameters.AddWithValue("@CountryCode", ddlCountryCode.Text);
            Cmd.Parameters.AddWithValue("@Mobile", txtMobileNumber.Text);
            SqlParameter sqlParam = new SqlParameter("@Result", DbType.Boolean);            
            sqlParam.Direction = ParameterDirection.Output;
            Cmd.Parameters.Add(sqlParam);
            Cmd.ExecuteNonQuery();
            con.Close();
            Response.Write(Cmd.Parameters["@Result"].Value);

做這個:

ALTER PROCEDURE [dbo].[usp_CheckEmailMobile](@Name VARCHAR(50), @Email NVARCHAR(50), @Password NVARCHAR(50), @CountryCode INT, @Mobile VARCHAR(50), @Result BIT OUTPUT)
AS 
BEGIN 

Declare @result bit

IF EXISTS (SELECT COUNT (*) FROM AUser WHERE  [Email] = @Email AND [Mobile] = @Mobile) 
Begin

Set @result=0; --Email &/or Mobile does not exist in database
End
ELSE
Begin
 --Insert the record & register the user 
INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile)  

Set @result=1 --True
End

Select @result as Result
END

cs代碼:

bool? IsSuccess= YourDBObject.usp_CheckEmailMobile(all params).FirstOrDefault().Result;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM