sas
Auflösen von Makrovariablen in Anführungszeichen innerhalb von PROC SQL Pass-Throughs
Suche…
Einführung
Eine der Herausforderungen, die ich zu Beginn meiner Arbeit mit SAS hatte, bestand nicht nur darin, Makrovariable-Daten an ein PROC-SQL-Passthrough zu übergeben, sondern auch ordnungsgemäß aufzulösen, wenn Anführungszeichen erforderlich waren. Wenn Sie einen String wie value oder date / datetime an ein PROC SQL-Passthrough übergeben, müssen beim Anschließen höchstwahrscheinlich einfache Anführungszeichen verwendet werden.
Ich habe die besten Ergebnisse gefunden, wenn ich die Funktion% BQUOTE verwende, um dies zu erreichen.
Bemerkungen
Weitere Informationen zur Funktion% BQUOTE finden Sie hier: https://v8doc.sas.com/sashtml/macro/z4bquote.htm
Pass-Through mit Makrovariable, die ein Datum ist
Zuerst werde ich mein Datum in eine Makrovariable setzen.
HINWEIS: Ich finde das Datum9. Funktioniert hervorragend mit IBM® Netezza® SQL und Transact-SQL. Verwenden Sie das Format, das für den von Ihnen ausgeführten SQL-Typ geeignet ist.
data _null_;
call symput('testDate',COMPRESS(put(today(),date9.)));
;RUN;
%PUT &testDate;
Meine% PUT-Anweisung wird in: 10MAR2017 aufgelöst
Als Nächstes möchte ich einen PROC SQL Pass-Through ausführen und die Makrovariable darin auflösen, um ein Datum anzugeben.
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') wird zu '10MAR2017' aufgelöst, wenn der Code ausgeführt wird.