Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL Server中的存储过程检查数据库中是否存在用户名_Sql_Sql Server - Fatal编程技术网

使用SQL Server中的存储过程检查数据库中是否存在用户名

使用SQL Server中的存储过程检查数据库中是否存在用户名,sql,sql-server,Sql,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

我想编写一个存储过程来插入员工信息。但它应该返回数据库中是否已经存在具有给定名称的员工,以便用户不能使用相同的员工名称注册两次

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

使用
EXISTS
子句:

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

使用SQL Server语法编辑。请检查

您需要将变量声明为SP中的输出,并将其值转换为代码并根据结果显示消息

声明@Result INT=0输出

设置@Result=1——成功
设置@Result=0——错误
设置@Result=2——已存在

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

        SET @Result = 2
        RETURN

    END

注意:在代码中将参数方向设置为参数方向。输出您的查询是正确的。问题是您使用了count(emp_名称)。这总是返回一行。它也可能为零,但只存在于检查是否有行时

这就是您的查询失败的原因。我猜,它总是返回1。如果删除计数,它应该可以正常工作


Naz

请使用SQL server版本、示例数据、表结构、以前的代码尝试编辑您的问题。@JohnHC请检查上述代码并给出建议
    IF EXISTS(SELECT 'x' FROM table
                WHERE Condition )
    BEGIN

        SET @Result = 2
        RETURN

    END