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

Откуда: Киев
Сообщений: 1387
Подскажите как можна сделать такую ХР

CREATE PROCEDURE Test
	@themeid bigint,
	@userid bigint,
	@top int,
	@rest int output
as
begin
	update dbo.Test
	set
		userid=@userid where themeid=@themeid and 
		id in (select top (@top) id from dbo.Test 
			where themeid=@themeid and userid is null)

	@rest = (select count(id) from dbo.Test
		where themeid=@themeid and userid is null)
end


Мне необходимо обновить несколько записей и вернуть в @rest сколько еще не обновленных данных осталось
ругается на неправильный синтаксис Incorrect syntax near '@rest'.

Подскажите как правильно написать такой запрос?

Спасибо.
3 окт 13, 11:42    [14917139]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ХР (update)  [new]
Glory
Member

Откуда:
Сообщений: 104760
VIT2708
Мне необходимо обновить несколько записей и вернуть в @rest сколько еще не обновленных данных осталось

И все это одним запросом update ?
3 окт 13, 11:44    [14917160]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ХР (update)  [new]
Гость333
Member

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

Присваивание переменных в T-SQL производится, на ваш выбор, при помощи конструкций:
SET @Переменная = <Скалярное значение>
либо
SELECT @Переменная = ... FROM ...

Выбирайте любой:
	set @rest = (select count(id) from dbo.Test
		where themeid=@themeid and userid is null)
или 
	select @rest = count(id) from dbo.Test
		where themeid=@themeid and userid is null
3 окт 13, 11:50    [14917207]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по ХР (update)  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Гость333,

Понял Спасибо
3 окт 13, 11:54    [14917248]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить