0

fileName というマクロ変数があります。ODBC経由でAccessデータベースに接続するproc sqlで使用しようとしました。ただし、コードにエラーがあるか、マクロ変数を認識していません。

これが私のコードです:

%let fileName=MYFILE.NAME
proc sql;
connect to odbc ("DSN=MS Access Database;"||
               "DBQ=&dbname;"||
               "FIL=MS Access;" ||
               "MaxBufferSize=512;" ||
               "PageTimeout=600;" ||
               "UID=admin");
create table t1 as
select * from connection to odbc
(SELECT * FROM tableA
where FileName='&fileName');
quit;

これは 0 行を返します。クエリでマクロ変数を実際の値に置き換えると、正しいデータを含む 1 行が返されます。

&fileName を二重引用符で囲むと、次のエラーが表示されます: エラー: CLI 記述エラー: [Microsoft][ODBC Microsoft Access Driver] '' は有効な名前ではありません。無効な文字や句読点が含まれていないこと、および長すぎないことを確認してください。

マクロ変数をクエリに渡す方法を教えてください。ありがとう。

4

3 に答える 3

0

マクロ変数を解決する場合は、単一引用符で囲まれていないことを確認する必要があります。この行:

where FileName='&fileName');

...である必要があります:

where FileName="&fileName");
于 2014-12-08T21:01:17.493 に答える