Поиск…


Вступление

Одна из проблем, с которой я столкнулся, когда я впервые начала использовать 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 при выполнении кода.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow