サーチ…


前書き

最初にSASを使い始めたときに直面した課題の1つは、マクロ変数データをPROC SQLパススルーに渡すだけでなく、その周りに引用符が必要な場合に適切に解決することでした。 valueやdate / datetimeのような文字列をPROC SQLのパススルーに渡すときは、解決の際に一重引用符で囲む必要があります。

これを達成するために%BQUOTE関数を使用すると、最良の結果が得られました。

備考

%BQUOTE関数の詳細は、 https ://v8doc.sas.com/sashtml/macro/z4bquote.htmを参照してください。

日付であるマクロ変数によるパススルー

まず、マクロ変数に日付を入れます。

注:私はdate9を見つける。 IBM®Netezza®SQLとTransact-SQLで効果的です。実行しているSQLの種類に適した形式を使用します。

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

私の%PUTステートメントが解決する:10MAR2017

次に、PROC SQLパススルーを実行し、そのマクロ変数を内部で解決して日付を指定したいとします。

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')は、コード実行時に '10MAR2017'に解決されます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow