![](/img/trans.png)
[英]Checking if a row already exists in SQL Server database using stored procedure
[英]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.