sas
Разрешение переменных макроса в кавычках в PROC SQL Pass-throughs
Поиск…
Вступление
Одна из проблем, с которой я столкнулся, когда я впервые начала использовать SAS, заключалась не только в передаче данных Macro Variable в PROC SQL pass-through, но в том, что она правильно разрешалась, если ей нужны котировки вокруг нее. При передаче строки, такой как value или date / datetime, в PROC SQL pass-through, она, скорее всего, должна иметь одинарные кавычки вокруг нее при ее разрешении.
Я нашел наилучшие результаты при использовании функции% BQUOTE для достижения этой цели.
замечания
Более подробную информацию о функции% BQUOTE можно найти здесь: https://v8doc.sas.com/sashtml/macro/z4bquote.htm
Передача с переменной макроса, которая является датой
Во-первых, я поставлю дату в переменную макроса.
ПРИМЕЧАНИЕ. Я считаю, что date9. отлично работает с IBM® Netezza® SQL и Transact-SQL. Используйте любой формат, который работает для типа SQL, который вы выполняете.
data _null_;
call symput('testDate',COMPRESS(put(today(),date9.)));
;RUN;
%PUT &testDate;
Инструкция My% PUT разрешает: 10MAR2017
Затем я хочу запустить PROC SQL Pass-through и разрешить эту переменную макроса внутри, чтобы указать дату.
PROC SQL;
CONNECT TO odbc AS alias (dsn=myServer user=userName password= pass);
CREATE TABLE TableName AS
SELECT *
FROM connection to alias
(
SELECT *
FROM
Database.schema.MyTable
WHERE
DateColumn = %bquote('&testDate')
);
QUIT;
% bquote ('& testDate') будет исправлено до 10MAR2017 при выполнении кода.