簡體   English   中英

使用SQL Server中的存儲過程檢查數據庫中是否存在用戶名

[英]Checking if user name exists in database using a stored procedure in SQL Server

我想編寫一個存儲過程來插入員工信息。 但是它應該返回數據庫中是否已經存在具有給定名稱的雇員,以便用戶不能兩次使用相同的雇員名稱進行注冊。

alter proc str_insertInfo
    @name nvarchar(30),
    @dob date,
    @department_id int,
    @description nvarchar(500),
    @gender char(10),
    @hobby int,
    @image nvarchar(50)
as
begin
    DECLARE @count int
    If exists (select count(emp_name) from employee_info where emp_name = @name)   
    Begin

        Set @count = 1
        return @count

    End     
    Else   
    begin

        Set @count = 0
        insert into employee_info
        values (@name, @dob, @department_id, isnull(@description, 'no description'),
            @gender, isnull(@hobby, 'no hobby'), isnull(@image, 'no image'))

    End

    Return @count

end
CREATE PROCEDURE CheckUsername(
   @Username VARCHAR(50)
)
AS
BEGIN

  IF EXISTS(SELECT 1 FROM your_table WHERE Column_name = @Username)

END

使用SQL Server語法進行編輯。 請檢查

使用EXISTS子句:

IF EXISTS(SELECT 1 FROM your_table WHERE Column_name = Inputparameter(ie:user 
name))
BEGIN
   RAISERROR('UserName already exists', 16, 1)
END

您需要在SP中將變量聲明為輸出,並將其值輸入代碼並根據結果顯示消息

聲明@Result INT = 0輸出

SET @Result = 1-成功
SET @Result = 0-錯誤
SET @Result = 2-已經存在

    IF EXISTS(SELECT 'x' FROM table
                WHERE Condition )
    BEGIN

        SET @Result = 2
        RETURN

    END

注意:在代碼中,將參數方向設置為ParameterDirection.Output

您的查詢是正確的。 問題是您使用了count(emp_name)。 這總是返回一行。 它也可能為零,但僅檢查是否存在一行。

這就是查詢失敗的原因。 我認為它總是返回1。如果刪除計數,它應該可以正常工作。

納茲

暫無
暫無

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

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