Постарайтесь не возвращать набор результатов из хранимой процедуры

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

create procedure test_procedure
as
begin

    select 1

end

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

declare @t table(i int)

insert into @t
exec test_procedure

Там какие-либо другие пути состоят в том, чтобы скрыть набор результатов возврата от кода вызова?

Обновленный

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

12
задан Jeff 11 March 2013 в 00:56
поделиться

3 ответа

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

3
ответ дан 2 December 2019 в 23:42
поделиться

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

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

0
ответ дан 2 December 2019 в 23:42
поделиться

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

или используйте следующий случай

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

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

1
ответ дан 2 December 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: