ProcSQLコマンドを使用してSQLデータベースから抽出する非常に小さなマクロをテストしています。私はこれを何度も使用し、それがどのように機能するかを理解していますが、今回は私を困惑させています!
%macro Correlation(dsn,db,prevdb,prodcode,sqltable,var,brick);
proc sql;
connect to ODBC (required="DSN=&dsn;" );
create table comp_correlation as select * from connection to ODBC
(select a.Table_Name,
a.Variable,
a.Correlation as Current_Corr
from DBTest.dbo.MetaData as a
where Product_Code=&prodcode. and Table_Name=&sqltable. and
variable=&var.);
disconnect from ODBC;
quit;
%mend;
次に、次のパラメーターを使用してこのマクロを呼び出します。私のサーバー名は検閲されていますが、正常に接続されていることを保証できます。
%Correlation(********, A2019, A2018, HouseValues, Houses, Value);
ただし、次のエラーが返されます。
[Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid column name 'HouseValues'.
なぜこれが起こっているのか誰か知っていますか?製品コードを列として選択しようとはしていません。それは私のwhereステートメントにのみありますか?
%bquote
マクロを使用してこれを修正しました。
%macro Correlation(dsn,db,prevdb,prodcode,sqltable,var,brick);
proc sql;
connect to ODBC (required="DSN=&dsn;" );
create table comp_correlation as select * from connection to ODBC
(select a.Table_Name,
a.Variable,
a.Correlation as Current_Corr
from DBTest.dbo.MetaData as a
where Product_Code=%bquote('&prodcode') and Table_Name=%bquote('&sqltable') and
variable=%bquote('&var'));
disconnect from ODBC;
quit;
%mend;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加