Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобраовать int в boolean ? / 11 сообщений из 11, страница 1 из 1
08.11.2002, 15:25:04
    #32065854
netfrog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
есть sp, должна в одной из таблиц искать пользователя и пароль. Ищет. Но вот в погоне за упрощением клиентской части хотелось бы, чтоб параметр @userOk возвращал на клиента не число, а был boolean и если пользователь (и) есть - возвращал 1, если нет - 0. подскажите как его убедить?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE PROCEDURE admAccess 
 @login varchar( 50 ),
 @passwd varchar( 50 ),
 @userOk int output,
 @accessOk bit output,
 @lockUser bit output
AS
 set @userOk =  (select count (*) from users where login = @login and password = @passwd) 
 
 set @accessOk = (select adm from users where login = @login)
 set @lockUser = (select lockUser from users where login = @login)
...
Рейтинг: 0 / 0
08.11.2002, 15:48:44
    #32065858
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Код: plaintext
1.
2.
3.
4.
5.
declare @accessOk bit 

select @accessOk
if exists(select * from sysobjects) set @accessOk =  1 
else set @accessOk =  0 
select @accessOk


Только учтите, что тип bit может по-разному интерпритироваться клиентским приложение. Напрмер, вместо 0/1 вы можете получить 0/-1
...
Рейтинг: 0 / 0
08.11.2002, 15:53:09
    #32065862
Salik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE PROCEDURE admAccess 
 @login varchar( 50 ),
 @passwd varchar( 50 ),
 @userOk bit  output,
 @accessOk bit output,
 @lockUser bit output
AS

if (select count (*) from users where login = @login and password = @passwd) > 0 
  begin
    set @userOk = 1 
  end 
else
  begin
   set @userOk = 0 
  end


 
 set @accessOk = (select adm from users where login = @login)
 set @lockUser = (select lockUser from users where login = @login)
...
Рейтинг: 0 / 0
08.11.2002, 15:59:00
    #32065865
AISOFT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Это лучше делать на клиенте или через функцию (или путем создания класса), которая возвращает boolean, после получения int on сервера.
...
Рейтинг: 0 / 0
08.11.2002, 16:00:43
    #32065867
netfrog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Не совскм понял. Можно прокоментировать:
Код: plaintext
1.
from sysobjects
...
Рейтинг: 0 / 0
08.11.2002, 16:15:57
    #32065873
netfrog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Проблема еще в том, что если пользователя с указанным именем и паролем не существует, то возвращается не 0 а Null, что, оответственно, не понимает клиент
...
Рейтинг: 0 / 0
08.11.2002, 16:21:31
    #32065874
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Видимо Glory эксепериментрировал с sysobjects и забыл исправить в постинге. Не обращай внимания.

> Проблема еще в том, что если пользователя с указанным именем и паролем не существует, то возвращается не 0 а Null, что, соответственно, не понимает клиент

А разве ISNULL() не поддерживается?
...
Рейтинг: 0 / 0
08.11.2002, 16:46:26
    #32065881
Gobzo Kobler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
Избегай битов и делай клиентское преобразование целого в булево. Битов в базе иметь не стоит - все таки на дворе третье тысячелетие, а не тихий 20й век.
...
Рейтинг: 0 / 0
08.11.2002, 19:09:19
    #32065902
Dennis_L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
А почему не стоит иметь в базе битов ? Какие с ними могут быть проблемы ?
...
Рейтинг: 0 / 0
08.11.2002, 22:46:41
    #32065915
Robert Djabarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
I agree with Gobzo Kobler , though it's not a problem to have them but rather inconvenience. First of all, they can't have a NULL value. Second, and most important, - BIT fields cannot be indexed. This means that if you have a table where you want to save some space on a flag and you declare that flag to be of type BIT, - you'll be doing table scan every time you want to include this field into your search criteria... Other than that, - no problem (unless it's a production server and your job is on the line :)
...
Рейтинг: 0 / 0
09.11.2002, 14:12:27
    #32065949
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобраовать int в boolean ?
я тоже согласен с Gobzo Kobler и Robert Djabarov...
лучше использовать tyneint или любой другой интегральный тип...
если нужно хранить несколько битовых полей
можно собрать в в один интегральный тип поразрядно...
но лучше все таки использовать отдельно....
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Преобраовать int в boolean ? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]