2017-02-23 1 views
-1

Ich möchte eine gespeicherte Prozedur zum Einfügen von Mitarbeiterinformationen schreiben. Es sollte jedoch zurückgegeben werden, ob ein Mitarbeiter mit einem bestimmten Namen bereits in der Datenbank vorhanden ist oder nicht, damit sich der Benutzer nicht zweimal mit demselben Mitarbeiternamen registrieren kann.Überprüfen, ob der Benutzername in der Datenbank mit einer gespeicherten Prozedur in SQL Server existiert

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 
+0

Bearbeiten Sie Ihre Frage mit SQL Server-Version, Beispieldaten, Tabellenstruktur, vorherigen Code versucht. – JohnHC

+0

@JohnHC Bitte überprüfen Sie den obigen Code und geben Sie einen Vorschlag – user19041992

Antwort

0

Verwenden EXISTS Klausel:

IF EXISTS(SELECT 1 FROM your_table WHERE Column_name = Inputparameter(ie:user 
name)) 
BEGIN 
    RAISERROR('UserName already exists', 16, 1) 
END 
2
CREATE PROCEDURE CheckUsername(
    @Username VARCHAR(50) 
) 
AS 
BEGIN 

    IF EXISTS(SELECT 1 FROM your_table WHERE Column_name = @Username) 

END 

Herausgegeben mit SQL Server-Syntax. Bitte überprüfen

0

Sie benötigen & erhalten in SP-Variable als Ausgang zu erklären, seinen Wert in Code & Display-Meldungen nach

DECLARE @Result INT = 0 OUTPUT

SET @Result = führen - -Erfolg
SET @Result = --error
SET @Result = --Already
Exist

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

     SET @Result = 2 
     RETURN 

    END 

Hinweis: In-Code Parameter Richtung als gesetzt ParameterDirection.Output

0

Ihre Anfrage korrekt ist. Das Problem ist, dass Sie count (emp_name) verwendet haben. Dies gibt immer eine Zeile zurück. Es könnte auch Null sein, aber existiert nur überprüft, ob es eine Zeile gibt.

Aus diesem Grund ist Ihre Abfrage fehlgeschlagen. Und ich nehme an, es hat immer 1 zurückgegeben. Wenn Sie die Zählung entfernen, sollte es gut funktionieren.

Naz

Verwandte Themen