sas
Rozwiązywanie zmiennych makr w cudzysłowach w ramach PROC SQL Pass-throughs
Szukaj…
Wprowadzenie
Jednym z wyzwań, jakie napotkałem, kiedy zacząłem używać SAS, było nie tylko przekazywanie danych Makrozmiennych do tranzytu PROC SQL, ale także ich poprawne rozwiązywanie, jeśli potrzebne byłyby cudzysłowy. Podczas przekazywania ciągu, takiego jak wartość lub data / data / godzina, do tranzytu PROC SQL, najprawdopodobniej musi on zawierać pojedyncze cudzysłowy podczas rozwiązywania.
Znalazłem najlepsze wyniki, używając do tego celu funkcji% BQUOTE.
Uwagi
Więcej informacji na temat funkcji% BQUOTE można znaleźć tutaj: https://v8doc.sas.com/sashtml/macro/z4bquote.htm
Przekazywanie z Makrozmienną, która jest datą
Najpierw umieszczę moją datę w zmiennej makro.
UWAGA: uważam tę datę9. działa świetnie z IBM® Netezza® SQL i Transact-SQL. Użyj dowolnego formatu, który działa dla typu wykonywanego SQL.
data _null_;
call symput('testDate',COMPRESS(put(today(),date9.)));
;RUN;
%PUT &testDate;
Moja instrukcja% PUT rozwiązuje się do: 10MAR2017
Następnie chcę uruchomić PROC SQL Pass-through i rozwiązać tę Zmienną Makro wewnątrz, aby określić datę.
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”) rozwiąże się do „10MAR2017” podczas wykonywania kodu.