SQL select распечатать результаты хранимой процедуры

Мое бизнес-приложение поддерживает только создание отчетов с выбранными данными с сервера SQL. В одном бизнес-процессе у меня есть очень сложная хранимая процедура, в которой используются другие хранимые процедуры, и она была разработана для распечатки результатов в виде журнала выполненной работы. То, что я хочу, чтобы распечатать эту распечатку и выбрать ее как varchar (max), чтобы мое приложение могло обрабатывать эти данные и отображать их пользователю.
Вот пример сценария, описанного в коде TSQL:

create procedure sp_test_print_out
as
begin
    Print 'Test';
    print 'Test 1';
end
go

create procedure sp_test_print_out_to_select
as 
declare @printOut varchar(max)
set @printOut = exec sp_test_print_out --How I can achieve this ?
select @printOut
end

go

exec sp_test_print_out_to_select

Ответы на вопрос(2)

Решение Вопроса

Вы можете попробовать установить значения в выходном параметре

create procedure sp_test_print_out
@printMessages varchar(max) output
as
begin
set @printMessages='Test'
Print 'Test';

set @printMessages= @printMessages + CHAR(10)
set @printMessages= @printMessages + 'Test 1'
print 'Test 1';
end
go


create procedure sp_test_print_out_to_select
as 
begin
declare @printOut varchar(max)
exec sp_test_print_out @printOut output -- can be achieved using output parameter ?
select @printOut
end

go

exec sp_test_print_out_to_select
 adopilot30 сент. 2010 г., 11:48
Спасибо, Это также было у меня на уме, я был обруч, чтобы есть другой более простой способ, чем обработка выходного параметра. Теперь мне нужно обработать все распечатанные данные, с новыми строками, error_messages и другими

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

командаxp_cmdshell а такжеSQLCMD может сделать работу. Xp_cmdshell в основном отключен и не может использоваться на большинстве серверов SQL из-за соображений безопасности.

Вот код:

CREATE TABLE #temp
(OUTPUT VARCHAR(MAX));

    declare @cmd varchar(800);
    set  @cmd = 'sqlcmd -d RobotTest -Q "exec sp_test_print_out"';

    INSERT INTO #TEMP
    exec xp_cmdshell @cmd  ;

select output from #temp;
drop table #temp;

Ваш ответ на вопрос