sas
Macrovariabelen oplossen tussen aanhalingstekens in PROC SQL Pass-throughs
Zoeken…
Invoering
Een van de uitdagingen die ik tegenkwam toen ik SAS voor het eerst begon te gebruiken, was niet alleen Macro Variable-gegevens doorgeven aan een PROC SQL-doorvoer, maar het ook goed laten oplossen als er quotes omheen nodig waren. Wanneer een string zoals waarde of datum / datetime wordt doorgegeven aan een PROC SQL-doorvoer, moet deze waarschijnlijk enkele aanhalingstekens eromheen hebben wanneer deze wordt opgelost.
Ik heb de beste resultaten gevonden bij het gebruik van de functie% BQUOTE om dit te bereiken.
Opmerkingen
Meer informatie over de functie% BQUOTE is hier te vinden: https://v8doc.sas.com/sashtml/macro/z4bquote.htm
Doorvoer met macrovariabele die een datum is
Eerst plaats ik mijn datum in een macrovariabele.
OPMERKING: ik vind die datum9. werkt uitstekend met IBM® Netezza® SQL en Transact-SQL. Gebruik de indeling die werkt voor het type SQL dat u uitvoert.
data _null_;
call symput('testDate',COMPRESS(put(today(),date9.)));
;RUN;
%PUT &testDate;
Mijn% PUT-instructie is opgelost in: 10MAR2017
Vervolgens wil ik een PROC SQL-doorvoer uitvoeren en die macrovariabele binnen oplossen om een datum op te geven.
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') wordt omgezet in '10MAR2017' wanneer de code wordt uitgevoerd.