Как использовать набор данных SAS, перенесенный во временную таблицу SQL Server и использовать с другой временной таблицей для соединения, обновления - PullRequest
0 голосов
/ 23 января 2020

Использование SAS Enterprise Guide Version 7.1 64 бит.

Я не могу создать базовые таблицы в SQL Сервер, таким образом, может только создавать временную таблицу для обработки данных.

Я также вытягиваю данные из набора данных SAS в глобальную временную таблицу как (набор данных SAS представляет собой таблицу teradata, помещаемую в sas- (шаг 2). Мне нужно обновить таблицу выходных.

Я также не могу видеть, сколько записей обновляется в журнал (если есть способ получить его, это будет полезно, если я знаю, что код работает) - у меня есть sastracelo c, но в таблице не указано количество обновлений.

Наконец, мне нужно обновить таблицу ## t1 (step4), созданную на шаге 1, полями из таблицы ## праздничных дней (step2), как мне ее кодировать? Правильно ли я использую комбинацию execute, pro c sql?

Шаг # 1

LIBNAME tmpdta ODBC DATAsrc=datasrcname INSERTBUFF=32767
USER='uid' PASSWORD="pwd" connection=shared;

LIBNAME loc '/c/folder/data';

PROC SQL exec noerrorstop;
CONNECT TO odbc as test(DSN=datasrcname USER='uid' PASSWORD="pwd" connection=shared;
connection=shared);
execute
(create table ##t1 
id int,
name varchar(50),
address varchar(100)
)by test;

- конец 1

шаг # 2

data tmpdt.'##holidays'n;
set loc.holidayexpns;
run;

шаг # 3

proc sql;
connect using tmpdt;
execute
(
update u SET
fee=0,
month=5
FROM tmpdt.##holidays u
)by tmpdt;

шаг № 4

PROC SQL exec noerrorstop;
CONNECT TO odbc as test(DSN=datasrcname USER='uid' PASSWORD="pwd" connection=shared;
connection=shared);
execute
(
update xyz
set a.fee=b.fee,
a.month=b.month
from tmpdt.##holidays h
join ##t1 xyz on 
h.id=xyz.id
)by test;

1 Ответ

0 голосов
/ 23 января 2020

Собственный запрос execute не будет знать ссылку SAS tmpdt., tmpdt будет известен вашему логину, только если на стороне сервера SQL у вас есть доступ к каталогу с похожим именем. Вы хотели указать tempdb?

За документацию

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

...