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

Откуда: md
Сообщений: 133
Доброго времени суток. Проблема в следующем, пишу хранимую процедуру. Необходимо было загонять данные в массив. Вычитал что массивов в sql 2000 нет, только темповые таблицы. создал
declare   @temp table     ( room int , price money , curent_out datetime , possible_inc datetime, res1 datetime, res2 datetime ) 
затем заполняю её
insert @temp      select c.room , c.price, a.dateo, c.datei, r1.datei, r2.datei
		from @cur c, @res1 r1, @already a, @res2 r2
		where c.room=r1.room and c.room= a.room and c.room=r2.room
при выполнии процедуры вводится параметр
@dout datime

Имею желание, чтобы @dout сравнивался с каждым значением из таблицы @temp , а именно со столбцом res1 и соответственно дальше отрабатывал нужный мне select. пишу:
select 
	case
 when @dout > t.res1 then 
		( select room, price from @temp t where curent_out < t.res1 and @dout < t.res2) 
			else 
		(select room, price from @temp t where @dout < t.res1)
           end 
from @temp t
в ответ
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

Подскажите пожалуйста как это можно реализовать.
Через if пробовал, не получается. косяк с тем что @temp не variable.
Спасибо
14 ноя 09, 11:28    [7929219]     Ответить | Цитировать Сообщить модератору
 Re: хранимая процедура в ms sql 2000  [new]
может так?
Guest
select room, price from @temp t where curent_out < t.res1 and @dout < t.res2 and @dout > t.res1

union all

select room, price from @temp t where @dout < t.res1

@dout = t.res1 ??
14 ноя 09, 11:45    [7929234]     Ответить | Цитировать Сообщить модератору
 Re: хранимая процедура в ms sql 2000  [new]
gumeniuc
Member

Откуда: md
Сообщений: 133
может так?
select room, price from @temp t where curent_out < t.res1 and @dout < t.res2 and @dout > t.res1

union all

select room, price from @temp t where @dout < t.res1

@dout = t.res1 ??

нет. судя по ошибки, надо проверить exists.. уже %)
14 ноя 09, 13:20    [7929357]     Ответить | Цитировать Сообщить модератору
 Re: хранимая процедура в ms sql 2000  [new]
el Pueblo
Member

Откуда: Харьков
Сообщений: 202
а так:
if exists (select * from @temp where res1<@dout)
begin
select room, price from @temp where curent_out<res1 and res2>@dout
end
else
select room, price from @temp where res1>@dout
???
14 ноя 09, 13:24    [7929366]     Ответить | Цитировать Сообщить модератору
 Re: хранимая процедура в ms sql 2000  [new]
aleks2
Guest
gumeniuc,

Ты бы постановку задачи огласил, а то мнится мне - опять рвем зубы через задний проход...
14 ноя 09, 13:41    [7929386]     Ответить | Цитировать Сообщить модератору
 Re: хранимая процедура в ms sql 2000  [new]
так,
Guest
gumeniuc
...
нет. судя по ошибки, надо проверить exists.. уже %)


...судя по ошибке?? мило)))
а судя по результату?

вас так смутило слово exists в сообщении ошибке?

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS

если да - это не о том что вы подумали

зы
переводчик в гугле работает
14 ноя 09, 14:51    [7929458]     Ответить | Цитировать Сообщить модератору
 Re: хранимая процедура в ms sql 2000  [new]
gumeniuc
Member

Откуда: md
Сообщений: 133
el Pueblo
а так:
if exists (select * from @temp where res1<@dout)
begin
select room, price from @temp where curent_out<res1 and res2>@dout
end
else
select room, price from @temp where res1>@dout
???

прямо в точку. чуть подправил и работает .
спасибо за помощь.
15 ноя 09, 01:36    [7930560]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить