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

Откуда:
Сообщений: 144
Должен получить список, а получаю последнюю запись в списке. Что делаю не так ?

CREATE PROCEDURE [dbo].[SVOB_MESTA]
@ID_OTD INT OUTPUT, @NOM_PAL INT OUTPUT
AS

DECLARE CURSOR_TYPE2 CURSOR LOCAL FOR
select s.id_otd, s.nom_palata from spr_palat s, spr_otdelenie o where s.id_otd=o.id_otd
OPEN CURSOR_TYPE2

FETCH NEXT FROM CURSOR_TYPE2
INTO @ID_OTD,@NOM_PAL

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @ID_OTD;
PRINT @NOM_PAL;

FETCH NEXT FROM CURSOR_TYPE2
INTO @ID_OTD,@NOM_PAL
END

CLOSE CURSOR_TYPE2
DEALLOCATE CURSOR_TYPE2
29 дек 16, 15:25    [20060957]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Андрей1985
Что делаю не так ?
Считаете, что с MSSQL нужно работать также как Interbase/Firebird.
29 дек 16, 15:34    [20061005]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
Андрей1985
Member

Откуда:
Сообщений: 144
Нельзя так ?
29 дек 16, 15:38    [20061025]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
правильный проходящий.
Guest
Андрей1985
Должен получить список
Для этого достаточно только это:
select s.id_otd, s.nom_palata from spr_palat s, spr_otdelenie o where s.id_otd=o.id_otd 

Все остальное - мусор.
29 дек 16, 15:39    [20061034]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Андрей1985,

можно, работает же.
29 дек 16, 15:40    [20061037]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
Андрей1985
Member

Откуда:
Сообщений: 144
ALTER PROCEDURE [dbo].[SVOB_MESTA]
@ID_OTD INT OUTPUT, @NOM_PAL INT OUTPUT,
@KOL_M int OUTPUT
AS
select s.id_otd, s.nom_palata from spr_palat s, spr_otdelenie o where s.id_otd=o.id_otd

select @KOL_M=COUNT(*) from pacient p where p.id_otd=@ID_OTD and p.date_vip is null and p.pol_pac!=1

должен получить список из трех колонок ID_OTD, NOM_PAL, KOL_M.
29 дек 16, 15:47    [20061067]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
правильный проходящий.
Guest
Андрей1985
должен получить список из трех колонок ID_OTD, NOM_PAL, KOL_M.
Ну так получайте. Вы про join что-нить слышали?
29 дек 16, 15:49    [20061086]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
Андрей1985
Member

Откуда:
Сообщений: 144
select s.id_otd, s.nom_palata,
(select COUNT(*) from pacient p where p.id_otd=s.id_otd and p.date_vip is null
and p.pol_pac!=1) as KOL_M
from spr_palat s, spr_otdelenie o where s.id_otd=o.id_otd

получить тот же результат, только через хран.процедуру.
получить спиcок переменных в первом запросе, передать во второй запрос.

Хочу принцип понять. Можно ли так как в firebird.
29 дек 16, 15:52    [20061098]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Андрей1985
Можно ли так как в firebird.
Нельзя.
Андрей1985
получить тот же результат, только через хран.процедуру.
CREATE PROCEDURE [dbo].[SVOB_MESTA]
as
begin
 set nocount on;

 select s.id_otd, s.nom_palata,
 (select COUNT(*) from pacient p where p.id_otd=s.id_otd and p.date_vip is null
 and p.pol_pac!=1) as KOL_M
 from spr_palat s, spr_otdelenie o where s.id_otd=o.id_otd

end;
29 дек 16, 16:02    [20061146]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить