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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow