sas
Risoluzione delle variabili macro tra virgolette all'interno di PROC SQL Pass-through
Ricerca…
introduzione
Una delle sfide che ho affrontato quando ho iniziato a utilizzare SAS non era solo il passaggio dei dati delle Macro Variabili in un passthrough di PROC SQL, ma il suo corretto completamento se aveva bisogno di virgolette. Quando si passa una stringa come valore o data / data / ora in un passthrough di PROC SQL, è probabile che sia necessario racchiudere tra virgolette singole quando si risolve.
Ho trovato i migliori risultati quando utilizzo la funzione% BQUOTE per ottenere questo risultato.
Osservazioni
Maggiori informazioni sulla funzione% BQUOTE possono essere trovate qui: https://v8doc.sas.com/sashtml/macro/z4bquote.htm
Pass-through con Macro Variable che è una data
Innanzitutto, inserirò la mia data in una variabile macro.
NOTA: trovo quella data9. funziona alla grande con IBM® Netezza® SQL e Transact-SQL. Usa qualsiasi formato che funzioni per il tipo di SQL che stai eseguendo.
data _null_;
call symput('testDate',COMPRESS(put(today(),date9.)));
;RUN;
%PUT &testDate;
La mia istruzione% PUT si risolve in: 10MAR2017
Successivamente, voglio eseguire un PASS-through di PROC SQL e risolvere la variabile Macro all'interno per specificare una data.
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') verrà risolto in '10MAR2017' quando viene eseguito il codice.