存储过程中的特殊字符

时间:2016-05-24 09:33:52

标签: sql database stored-procedures sas

我想使用SQL过程将数据从SQL提取到SAS EG。

但是一个参数(INVNO)中的值是TN / 2015-16 / 0005-13,即特殊字符。

这导致错误:

  

错误:CLI准备错误:[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]第1行:'/'附近的语法不正确。   SQL语句:执行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 个答案:

答案 0 :(得分: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;