Можно ли поместить макропеременные в запрос PROC DB2EXT?
Это работает:
WHERE SDD BETWEEN '01.05.2018' AND '30.05.2018'
Но все мои попытки вставить переменную макроса приводят к ошибкам.
Declaration of Macro
/* Statement in SAS, declaring the Macro, and transfering in to the remote session */
%let month = 05;
%SYSLPUT MONTH = &month;
%PUT &MONTH;
DB2EXT SQL
/* Error(-180): DSN00180E THE DATE, TIME, OR TIMESTAMP VALUE 01."&month.".2018 IS INVALID */
WHERE SDD BETWEEN '01."&month.".2018' AND '30.05.2018'
/* Error(-206): DSN00206E 01.MAY.2018 IS NOT VALID IN THE CONTEXT WHERE IT IS USED */
WHERE SDD BETWEEN "01.&month..2018" AND '30.05.2018'
/* Futile attemps */
WHERE SDD BETWEEN '01&month2018' AND '30.05.2018'
WHERE SDD BETWEEN '01month2018' AND '30.05.2018'


Используйте следующую конструкцию при создании литералов в одинарных кавычках, которые должны содержать вычисляемую макропеременную:
%str(%')macro-evaluation%str(%')
Не обращайте внимания на немного странную раскраску переполнения стека (SO) в приведенном выше коде. Средство визуализации SO не может расшифровать одинарную кавычку как часть закрытия% str ()
Так что ваш случай может быть
%str(%`)01&month.2018%str(%')
Попробуйте использовать значения литерала в формате ISO в запросе DB2EXT, т. Е. Чтобы литерал выглядел как «ГГГГ-ММ-ДД» (для литерала даты).