Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проверка, есть ли значение в таблице  [new]
erman
Member

Откуда:
Сообщений: 409
Здравствуйте!
Помогите, пожалуйста, решить такую задачку :
Есть хранимая процедура, принимающая значение @name. В таблице Students(поле nameStudent) нужно проверить все значения и если такое имеется - вернуть 1. Как правильно написать процедуру?
27 сен 11, 19:36    [11344547]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31972
erman
Здравствуйте!
Помогите, пожалуйста, решить такую задачку :
Есть хранимая процедура, принимающая значение @name. В таблице Students(поле nameStudent) нужно проверить все значения и если такое имеется - вернуть 1. Как правильно написать процедуру?
select 1
where exists(...)
27 сен 11, 19:38    [11344555]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
SELECT TOP(1) 1 FROM Students WHERE nameStudent=@name
27 сен 11, 21:27    [11344973]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
erman
Member

Откуда:
Сообщений: 409
alexeyvg
erman
Здравствуйте!
Помогите, пожалуйста, решить такую задачку :
Есть хранимая процедура, принимающая значение @name. В таблице Students(поле nameStudent) нужно проверить все значения и если такое имеется - вернуть 1. Как правильно написать процедуру?
select 1
where exists(...)


Написал такое :
select @res = 1 from Students where exists(Students.nameStudent = @name);
Ошибка синтаксиса. Как правильно будет?
27 сен 11, 21:29    [11344982]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
erman,

select @res = 1 from Students where exists(Students.nameStudent = @name);
Как-то так

select @res = 1 
where exists(select 1 from Students where nameStudent = @name);
27 сен 11, 21:33    [11345003]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
erman
Member

Откуда:
Сообщений: 409
iap
SELECT TOP(1) 1 FROM Students WHERE nameStudent=@name

Это работает, но мне нужно значение загнать в переменную. Делал так - не работает.
[SRC C#]
set @res = SELECT TOP(1) 1 FROM Students WHERE nameStudent=@name
[/SRC C#]
27 сен 11, 21:50    [11345065]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
erman,

А этот вариант работает?
select @res = 1 
where exists(select 1 from Students where nameStudent = @name);
27 сен 11, 21:59    [11345114]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
erman
Member

Откуда:
Сообщений: 409
trew,

Процедура сработала, но результата я не вижу - просто пишет "Выполнение команд успешно завершено."
27 сен 11, 22:08    [11345142]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
erman,

Так может переменной ничего не присваивается.
Попробуй перед тем селектом написать
select @res = 0
27 сен 11, 22:13    [11345157]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
qwerty112
Guest
erman
trew,

Процедура сработала, но результата я не вижу - просто пишет "Выполнение команд успешно завершено."

где пишет ? где выполняете, скрытный вы наш ?
27 сен 11, 22:13    [11345159]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
erman
Member

Откуда:
Сообщений: 409
qwerty112,

Management Studio
27 сен 11, 22:20    [11345177]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
erman,

ALTER    procedure   ..
...параметры процедуры
, @res [int] output
as
Это?
27 сен 11, 22:27    [11345191]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
erman,

set @res = ISNULL((SELECT TOP(1) 1 FROM Students WHERE nameStudent=@name) , 0)
select @res
27 сен 11, 23:24    [11345314]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31972
erman
alexeyvg
select 1
where exists(...)


Написал такое :
select @res = 1 from Students where exists(Students.nameStudent = @name);
Ошибка синтаксиса. Как правильно будет?
Правильно будет как я написал
select @res = 1
where exists(select * from Students where nameStudent = @name)
28 сен 11, 10:10    [11346114]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31972
erman
trew,

Процедура сработала, но результата я не вижу - просто пишет "Выполнение команд успешно завершено."
Это нормально, я тоже не вижу значения переменных на сервере :-)
28 сен 11, 10:11    [11346129]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
[quot erman]
iap
SELECT TOP(1) 1 FROM Students WHERE nameStudent=@name

Это работает, но мне нужно значение загнать в переменную. Делал так - не работает.
 
set @res = SELECT TOP(1) 1 FROM Students WHERE nameStudent=@name
[/SRC C#][/quot][src]DECLARE @Exists INT;
SELECT TOP(1) @Exists=1 FROM Students WHERE nameStudent=@name;

SELECT @Exists;
28 сен 11, 10:50    [11346358]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
iap
DECLARE @Exists INT;
SELECT TOP(1) @Exists=1 FROM Students WHERE nameStudent=@name;

SELECT @Exists;
28 сен 11, 10:51    [11346360]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
надо бы еще уточнить что возвращать ( или не возвращать ) в случае если
значение не найдено =) я лично не телепат, но по логике либо 0 либо ничего не возращать.
28 сен 11, 10:54    [11346388]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
Если нужно просто однократно ветвить логику в зависимости от наличия данных, можно сделать так:
if exists(select top 1 1 from .... where ...)
    (дальнейшие действия)
28 сен 11, 11:05    [11346500]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
J.d
надо бы еще уточнить что возвращать ( или не возвращать ) в случае если
значение не найдено =) я лично не телепат, но по логике либо 0 либо ничего не возращать.
Как это - "ничего не возращать" там, где ожидается возврат чего-либо?
28 сен 11, 11:13    [11346589]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Сон Веры Павловны
Если нужно просто однократно ветвить логику в зависимости от наличия данных, можно сделать так:
if exists(select top 1 1 from .... where ...)
    (дальнейшие действия)
EXISTS и так определяет существования первой попавшейся записи, удовлетворяющей условию.
TOP 1 там совершенно лишнее!
28 сен 11, 11:15    [11346600]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
iap
EXISTS и так определяет существования первой попавшейся записи, удовлетворяющей условию.
TOP 1 там совершенно лишнее!

Да, ступил, согласен.
28 сен 11, 11:24    [11346697]     Ответить | Цитировать Сообщить модератору
 Re: Проверка, есть ли значение в таблице  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
erman
...
нужно проверить все значения и если такое имеется - вернуть 1. Как правильно написать процедуру?


ожидается если значение имеется.

ТС
да и зачем писать процедуру? напишите функцию.
28 сен 11, 11:35    [11346770]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить