У вас есть два варианта, один из них - подключиться к БД с помощью оператора LIBNAME, а затем использовать PROC APPEND для вставки данных.
libname demo odbc dsn="myDB" schema='dbo';
proc append base=demo.dbTable data=sashelp.class;
run;
В противном случае вы можете сгенерировать операторы INSERT INTO из шага данных, используя CALL EXECUTE.
Это пример того, как это работает с запросом набора данных не (вставкой), но должен дать вам четкое представление о том, как он работает. Сначала вам нужно убедиться, что у вас разработан запрос, а затем попытаться выполнить его с помощью CALL EXECUTE ()
. Я использовал переменные str # в качестве промежуточных шагов, чтобы вы могли увидеть генерируемый код и его работу для построения. твой собственный.
*create fake data to simulate ID list;
data have;
input id $;
cards;
Alfred
Jane
;
run;
Data demo;
set have end=eof;
*this runs once at the beginning only;
if _n_=1 then
do;
str1 = "proc sql stimer ;
select * from sashelp.class
where name in (";
call execute(str1);
end;
*this changes for each line;
str2 = quote(trim(id));
call execute(str2);
*this runs once for every line EXCEPT the last line, adds a comma for the query to be valid;
if not eof then do;
str3 = ", ";
call execute(str3);
end;
*this runs once, only at the end to close query;
if eof then
do;
str4 = ");";
call execute(str4);
end;
run;