2016-05-24 33 views
0

SQLプロシージャを使用して、SQLからSAS EGにデータをプルする必要があります。ストアドプロシージャ内の特殊文字

ただし、1つのパラメータ(INVNO)の値はTN/2015-16/0005-13、つまり特殊文字です。

これは、エラーの原因となっている。

ERROR: CLI prepare error: [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '/'. SQL statement: execute SAS_INV_RPT AMRUTFAC, SDAB, 1, TN05/000023/14-15, TN05/000024/14-15.

は、誰もがこのための回避策を思い付くことができますか?

PROC SQL; 
    CONNECT TO ODBC (DSN='AHCLOD' uid=&uid pwd=&pwd); 
    CREATE TABLE sas_inv_rpt AS 
    SELECT * FROM connection to ODBC (
     execute SAS_INV_RPT 
     &COMPANY_CODE, 
     &LOCATION_CODE, 
     &LANG_ID, 
     &INVNO_min, 
     &INVNO_max); 
    DISCONNECT FROM ODBC; 
QUIT; 

はまた、私はINVNO_minとINVNO_maxでテキスト値の範囲を使用することができます最初の質問に答えるために

+1

:見てみましょう

をあなたのSQLステートメントにはどのような構文が働き、SASマクロ変数には誰かが必要とする構文にマクロ変数値を変換するのに役立つかもしれない値があります。 – Tom

+0

投稿にはいくつかの質問があります。一度に1つに集中すれば、助けを得ることができます。また、@Tomが指摘しているように、私たちが見ることができない多くのことがあなたのコードで進行しています - 例えば、マクロ変数。同じ設定をしている人のために再現可能な例を作りましょう。 –

答えて

0

を求められます。あなたが見ることができます場合はSAS %QUOTE and %NRQUOTE MACRO Functions

PROC SQL; 
    CONNECT TO ODBC (DSN='AHCLOD' uid=&uid pwd=&pwd); 
    CREATE TABLE sas_inv_rpt AS 
     SELECT * FROM connection to ODBC 
     (execute 
      SAS_INV_RPT 
      &COMPANY_CODE, 
      &LOCATION_CODE, 
      &LANG_ID, 
      %QUOTE(&INVNO_min), /* Mask any special chars in the resolved text*/ 
      %QUOTE(&INVNO_max)); 
    DISCONNECT FROM ODBC; 
    QUIT; 
    RUN;