2016-05-24 60 views
0

我想使用SQL過程將數據從SQL中提取到SAS EG。存儲過程中的特殊字符

但是在一個參數(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

您的帖子中有幾個問題,如果您一次只關注一個問題,則更有可能獲得幫助。另外,正如@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;