Recherche…


Introduction

L'un des défis auxquels j'ai été confronté lorsque j'ai commencé à utiliser SAS consistait non seulement à transmettre des données de variables de macro dans un transfert SQL PROC, mais à les résoudre correctement si des citations étaient nécessaires. Lors de la transmission d'une chaîne comme value ou date / datetime dans un pass SQL direct, il est probable que des guillemets simples soient présents lors de la résolution.

J'ai trouvé les meilleurs résultats en utilisant la fonction% BQUOTE pour y parvenir.

Remarques

Plus d'informations sur la fonction% BQUOTE peuvent être trouvées ici: https://v8doc.sas.com/sashtml/macro/z4bquote.htm

Pass-through avec macro variable qui est une date

Tout d'abord, je placerai ma date dans une variable macro.

NOTE: Je trouve cette date9. fonctionne parfaitement avec IBM® Netezza® SQL et Transact-SQL. Utilisez le format qui fonctionne pour le type de SQL que vous exécutez.

data _null_;
            call symput('testDate',COMPRESS(put(today(),date9.)));
;RUN;
%PUT &testDate;

Mon énoncé% PUT est résolu comme suit: 10MAR2017

Ensuite, je veux exécuter un passage SQL PROC et résoudre cette variable de macro pour spécifier une date.

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') se résoudra à '10MAR2017' lorsque le code sera exécuté.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow