SAS подключается к SQL Server и возвращает параметр - PullRequest
0 голосов
/ 19 октября 2018

Я хочу сохранить возвращаемое значение из хранимой процедуры 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 ]

0 голосов
/ 20 октября 2018

Вывод таблицы (давайте назовем это набором результатов) хранимой процедуры SQL Server может быть записан insert во временную таблицу.Как только набор результатов находится во временной (#<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

0 голосов
/ 19 октября 2018

Это то, что в документации по 9.3 говорится:

Любой код возврата или сообщение, генерируемое СУБД, доступно в макропеременных SQLXRC и SQLXMSG после выполнения оператора.См. Макропеременные для реляционных баз данных для получения дополнительной информации об этих макропеременных.

http://support.sas.com/documentation/cdl/en/acreldb/65247/HTML/default/viewer.htm#n0pj5uu3i328pmn1fackclh2xnd9.htm

Вы пробовали это?Что случилось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...