使用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