Я хочу сохранить возвращаемое значение из хранимой процедуры SQL Server в переменной SAS.
Вот мой код:
proc sql;
Connect To OLEDB As MyDb ( Init_String = " Provider=SQLOLEDB.1; ... )
Execute (spDamjanTest) by MyDb;
Disconnect From MyDb;
Quit;
Если я использую код ниже, хранимая процедура выполняется дважды:
proc sql;
connect to oledb as SQLSVR (provider=sqloledb
properties=("Data Source"=...);
select *
from connection to SQLSVR
(exec spDamjanTest);
disconnect from SQLSVR;
quit;
Хранимая процедура:
CREATE PROCEDURE spDamjanTest
AS
Select 5
Всего 2 ответа
Вывод таблицы (позволяет вызвать ее набор результатов) хранимой процедуры SQL Server можно захватить, вставив ее во временную таблицу. После того, как результирующий набор находится во временной ( #<table-name>
) таблице, вы можете выбрать его из SAS.
* libname SS sqlsvr ... ;
proc sql;
connect using SS;
execute (
create table #sp_table_out (
column1 int
)
insert into #sp_table_out exec dbo.spDamjanTest
) by SS;
create table work.sp_output as
select * from connection to SS
(
select * from #sp_table_out
);
execute (
drop table #sp_table_out
) by SS;
quit;
proc print data=work.sp_output;
run;
Этот ответ основан на информации из « Как получить результат хранимой процедуры в таблицу» Грег Ларсен, ноябрь 2016 г.
Это то, что говорится в документах для 9.3:
Любой код возврата или сообщение, генерируемое СУБД, доступно в макропеременных SQLXRC и SQLXMSG после выполнения оператора. См. Макрокоманды для реляционных баз данных для получения дополнительной информации об этих макропеременных.
Вы пробовали это? Что случилось?