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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow