Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

output-параметры в рекурсивных выборках [MSSQL]


Ega23 ©   (2005-08-10 16:49:00) 

Есть такая простенькая процедура:

if exists (select * from sysobjects where id = object_id(N'[S_TempProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [S_TempProc]
GO
CREATE PROCEDURE S_TempProc
@Count int=0,
@OutMess varchar(2000) ='' output

As
Declare @Result int;

Select @Result=@Count+1;

Select @OutMess=@OutMess+';'+Cast(@Count as varchar(3));

if @Count<5
exec @Result=S_TempProc @Count=@Result, @OutMess=@OutMess output  
Return(@Result);
go



Есть такой простенький скрипт её вызова:

Declare
 @ss varchar(2000)

exec S_TempProc @Count=0, @OutMess=@ss output;
select X=@ss


Почему на выходе всё время NULL???


Ega23   (2005-08-10 17:13:00) [1]

Оп-па.... Как же это я так проглядел-то!!!!
Пора домой...
Спасибо!


MOA   (2005-08-10 17:08:00) [2]

Любая операция с NULL даст NULL. В том числе и
@OutMess=@OutMess+';'+Cast(@Count as varchar(3))

Т.е. при вызове параметру @OutMess нужно присвоить хотя бы пустую строку:
Declare
@ss varchar(2000)
SET @ss=''

Удачи!


Наверх

Титульная страница Поиск, карта сайта Написать письмо