Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > [MSSQL]Запрос авторизации


Автор: MadCoder 8.5.2008, 11:07
Здравствуйте!

Пишу программу, где вход осуществляется по пользователю и паролю.

Вот какая функция на SQL получилась:
Код

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

--Показывает, верный или нет логин и пароль
CREATE  FUNCTION [dbo].[Checkpassword] (@userlogin varchar(32), @userpassword varchar(32))  
RETURNS int AS  
BEGIN 
IF @userpassword = (select password from tblEmployee where userlogin=@userlogin)
return 1
ELSE
return 0
END


Почему-то не работает... Помогите исправить пожалуйста и покритикуйте, может есть способ лучше? smile 

Автор: Magnifico 8.5.2008, 11:49
Код

alter  FUNCTION [dbo].[Checkpassword] (@userlogin varchar(32), @userpassword varchar(32))  
RETURNS int AS  
BEGIN 
declare @flag int
    IF @userpassword = (select top 1 password from tblEmployee where userlogin=@userlogin)
        set @flag= 1
    ELSE
        set @flag =0
return @flag
END


или

Код

alter  FUNCTION [dbo].[Checkpassword] (@userlogin varchar(32), @userpassword varchar(32))  
RETURNS int AS  
begin

    IF @userpassword = (select top 1 password from tblEmployee where userlogin=@userlogin)
        return 1
        return 0
end


если будет 2 одинаковых юзера подзапрос вернет болше чем одну запись и функция даст ошибку  ( top 1)
оператор return должен быть последней инструкцией

Автор: MadCoder 8.5.2008, 11:53
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)