Избегайте возврата набора результатов из хранимой процедуры - PullRequest
11 голосов
/ 25 июля 2010

Предположим, у меня есть некоторая хранимая процедура (и я не могу ее изменить), которая возвращает набор результатов:

create procedure test_procedure
as
begin

    select 1

end

Я знаю, что могу вставить набор результатов в таблицу, чтобы она была скрытана код вызова:

declare @t table(i int)

insert into @t
exec test_procedure

Есть ли другие способы скрыть возвращаемый набор результатов от кода вызова?

Обновлено

Похоже, я немного запутался.Я ищу только ответы на T-SQL (не .NET).

Ответы [ 3 ]

3 голосов
/ 25 июля 2010

Нет, другого решения нет.Тем не менее, вы должны рефакторинг вашей процедуры, чтобы сделать только то, что вам нужно.Если вам нужны выходные данные для других вызовов, попробуйте разделить процедуру на две части.

1 голос
/ 02 августа 2010

Используйте необязательный выходной параметр.

или используйте нижний регистр

Create procedure Check @c int
as
begin
if @c = 1
    select 1
else
    print 1 
end

напишите любое условие, которое будет удовлетворять и которое возвращает указанные вами значения.используйте этот параметр как необязательный, поэтому никаких других изменений в вашей процедуре не будет.

0 голосов
/ 26 июля 2010

Вы бы предпочли вернуть данные через выходной параметр и вернуть код состояния в качестве возвращаемого значения процедуры?

Вы не можете легко вернуть полный набор результатов через этот выходной параметр, но вы можете вернуть некоторые данные с разделителями в формате по вашему выбору.

...