一尘不染

SQL选择打印出存储过程的结果

sql

我的业务应用程序仅支持报告来自SQL
Server的选定数据。在一个业务流程中,我有一个非常复杂的存储过程,该过程使用其他存储的procs进行了处理,旨在将结果打印为完成的日志。我想要捕获该打印并将其选择为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

阅读 243

收藏
2021-03-17

共1个答案

一尘不染

您可以尝试在输出参数中设置值

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
2021-03-17