[英]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.