繁体   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