Макросы в запросах PROC DB2EXT?

Можно ли поместить макропеременные в запрос 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'

Попробуйте использовать значения литерала в формате ISO в запросе DB2EXT, т. Е. Чтобы литерал выглядел как «ГГГГ-ММ-ДД» (для литерала даты).

mao 11.07.2018 12:40
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте следующую конструкцию при создании литералов в одинарных кавычках, которые должны содержать вычисляемую макропеременную:

%str(%')macro-evaluation%str(%')

Не обращайте внимания на немного странную раскраску переполнения стека (SO) в приведенном выше коде. Средство визуализации SO не может расшифровать одинарную кавычку как часть закрытия% str ()

Так что ваш случай может быть

%str(%`)01&month.2018%str(%')

Другие вопросы по теме