2012-06-20 3 views
3

Как вернуть 1, если имя пользователя существует и 0 в другом случае? Вот что я пробовал.Как проверить, существует ли имя пользователя

IF EXISTS (SELECT * FROM [User] WHERE UserName = @UserName and [email protected]) 
    begin 
     return 1; 
    end 
    else 
     begin 
    declare @CreatedOn datetime 
    select @CreatedOn = getdate() 
    insert into [User](UserName,Password,EmailID,ContactNo,CreatedOn) values(@UserName,@Password,@EmailID,@ContactNo,@CreatedOn) 
+0

может у меня кто-нибудь ??? –

+0

Чтобы подтвердить, хотите ли вы вернуть 1, когда имя пользователя существует или когда существуют имя пользователя и адрес электронной почты? Ваш код предлагает нечто иное, чем текст. – psych

+0

Это должно работать: SELECT COUNT (*) FROM [User] WHERE (UserName = @Username И EMAILID = @ EMAILID) Возвращает 0, если оленья кожа существует, 1 или больше, если существует –

ответ

2

Может быть, вы могли бы попробовать этот запрос:

Select count(*) from [user] where UserName = @UserName and [email protected] 

и если имя пользователя существует COUNT (*) будет больше, то 0

+0

не работает. .my предложение состоит в том, что без использования параметра мы не можем вернуть значение из хранимой процедуры. Так что дайте другое кодирование, используя это или любое другое, что оно работает. tels –

0

Я вижу большую проблему здесь. вы заявили, что хотите узнать, существует ли пользователь или нет. но запрос показывает побочный эффект, что, если пользователь не существует, вы создадите пользователя в том же вызове. они должны быть отдельными командами sql. один для запроса/чтения и другой для команды/insert.

, чтобы определить, существует ли у пользователя простой select 1 from [users] where [username] = @user. если какие-либо строки (1?) возвращаются, пользователь существует, иначе пользователь не существует.

вы можете выдать команду, чтобы создать пользователя

insert into [User](UserName,Password,EmailID,ContactNo,CreatedOn) values(@UserName,@Password,@EmailID,@ContactNo,getdate()) 
+0

его не работает ..мое предложение состоит в том, что без использования параметра мы не можем вернуть значение из хранимой процедуры. Так что дайте другое кодирование, используя это или любое другое, что оно работает. Pls tel –

+0

Параметры вывода не требуются. используйте 'ExecuteReader()' для получения результатов. Я избегаю параметров любой ценой. –

3
CREATE PROCEDURE CheckUserExists 
AS 
    @UserName NVARCHAR(MAX), 
    @Email NVARCHAR(MAX) 
BEGIN  
    IF EXISTS (SELECT 1 FROM [User] WHERE UserName = @UserName OR [email protected]) 
    BEGIN 
     RETURN 1 
    END 
    ELSE BEGIN 
     RETURN 0  
    END 
END 
+0

его не работает..подумать, что без использования параметра мы не можем вернуть значение из хранимой процедуры. Пожалуйста, дайте другое кодирование, используя это или любое другое, что оно работает. Tels tel –

+0

Вы можете просто вернуть: http : //msdn.microsoft.com/en-us/library/ms174998.aspx – psych

+0

Что не работает? – psych

0

Попробуйте это:

IF EXISTS (SELECT 1 FROM [User] WHERE UserName = @UserName and [email protected]) 
    begin 
     return 1; 
    end 
    else 
     return 0; 
+0

его не работает..подумать, что без использования параметра мы не можем вернуть значение из хранимой процедуры .. так что дайте другое кодирование, используя это или любое другое, что оно работает. Tels tel –

0
/* Execute the SP As*/ 
DECLARE @return_value int 
EXEC @return_value = [dbo].[CheckUserExists] 
Select @return_value 

/*STORED PROCEDURE*/ 
CREATE PROCEDURE CheckUserExists 
AS 
    @UserName NVARCHAR(MAX), 
    @Password NVARCHAR(MAX) 
    @EmailID NVARCHAR(MAX), 
    @ContactNo NVARCHAR(MAX) 
BEGIN 

IF EXISTS (SELECT 1 FROM [User] WHERE UserName = @UserName and [email protected]) 
    BEGIN 
     RETURN 1; 
    END 
    ELSE 
     BEGIN 
     DECLARE @CreatedOn DATETIME 
     SELECT @CreatedOn = GETDATE() 
     INSERT INTO [User](UserName,Password,EmailID,ContactNo,CreatedOn) 
     VALUES(@UserName,@Password,@EmailID,@ContactNo,@CreatedOn) 
     RETURN 0; 
END 
+0

его не работает..по моему предложению заключается в том, что без использования параметра мы не можем вернуть значение из хранимой процедуры. Так что дайте другое кодирование, используя это или любое другое, что оно работает. tels –

+0

@giri Попробуйте выполнить хранимую процедуру из SqlServer-Management-Studio («Правый клик» на Sp и «Execute»). Затем вы увидите код, как указано ниже. DECLARE (at) return_value int EXEC (at) return_value = [dbo]. [CheckUserExists] Выбрать (at) return_value; Это то, как значения, возвращаемые из sp, принимаются за пределами. Здесь (a) => По курсу – shajivk

0

CREATE PROCEDURE CheckUserExists AS @Username NVARCHAR (MAX), @Email NVARCHAR (MAX) Между BEGIN
объявить @usercount Int

Select @usercount = count(UserName) from [user] where UserName = @UserName and [email protected] 

IF (@usercount = 1) 
BEGIN 
    RETURN 1 
END 
ELSE BEGIN 
    RETURN 0  
END 

END

Смежные вопросы