Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с хранимой процедурой, плизз... / 5 сообщений из 5, страница 1 из 1
06.09.2002, 12:12:24
    #32048738
mDmitriy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с хранимой процедурой, плизз...
В общем, надо получить следующий номер в группе.
При выполнении первой процедуры ничего не происходит.
Почему?

Create PROCEDURE H_Guest_SetNum
/* номер гостя в группе */
@IdGuestGroup INT,
@NumGUEST INT OUTPUT
AS
IF (@IdGuestGroup is NULL)
SET @NumGuest = NULL
ELSE BEGIN
SELECT @IdGuestGroup = IdGuestGroup
FROM H_GuestGroup
WHERE IdGuestGroup = @IdGuestGroup

EXEC J_Num_IU @IdGuestGroup, @NumGuest
END

CREATE PROCEDURE J_Num_IU
/* обновление J_Num */
@NumGroup INT = NULL,
@NUMGUEST INT OUTPUT
AS
SELECT @NumGuest = NumGuest + 1
FROM J_Num
WHERE NumGroup = @NumGroup

IF (@NumGuest IS NULL) BEGIN
INSERT INTO J_Num (NumGroup, NumGuest) VALUES (@NumGroup,1)
SET @NumGuest = 1
END
ELSE
UPDATE J_Num
SET NumGuest = @NumGuest
WHERE NumGroup =@NumGroup


С уважением, Дмитрий
...
Рейтинг: 0 / 0
06.09.2002, 12:27:11
    #32048750
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с хранимой процедурой, плизз...
В первой процедуре надо вызывать вторую так:
Код: plaintext
EXEC J_Num_IU @IdGuestGroup, @NumGuest out
...
Рейтинг: 0 / 0
06.09.2002, 12:53:37
    #32048774
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с хранимой процедурой, плизз...
1. Выражение
Код: plaintext
1.
2.
SELECT @IdGuestGroup = IdGuestGroup 
FROM H_GuestGroup 
WHERE IdGuestGroup = @IdGuestGroup 

поскольку выполняется в ветке, где @IdGuestGroup не NULL, не приводит ни к каким изменениям в значении переменной и является лишним.

2. Для возврата параметра из процедуры следует пользоваться синтаксисом
Код: plaintext
EXEC J_Num_IU @IdGuestGroup, @NumGuest OUTPUT


3. Процедуру H_Guest_SetNum следует вызывать с таким же синтаксисом (если хотите что-то вернуть в переменную @NumGUEST)

С уважением,
Александр Степанов
...
Рейтинг: 0 / 0
06.09.2002, 14:15:20
    #32048809
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с хранимой процедурой, плизз...
В дополнение: каюсь, допустил ошибку. Выражение
Код: plaintext
1.
2.
3.
SELECT @IdGuestGroup = IdGuestGroup 
FROM H_GuestGroup 
WHERE IdGuestGroup = @IdGuestGroup 


Приведет к присваиванию NULL переменной, если не найдется строк в таблице H_GuestGroup с IdGuestGroup = @IdGuestGroup.

В очередной раз кляну себя за невнимательность :(
...
Рейтинг: 0 / 0
06.09.2002, 15:35:28
    #32048867
mDmitriy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с хранимой процедурой, плизз...
Большое спасибо, разобрался

С уваженим, Дмитрий
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с хранимой процедурой, плизз... / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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