2017-02-23 6 views
0

나는 내가이 얻을이OpenQuery SQL - 작은 따옴표에 어떤 문제가 있습니까?

SET @Qry = 

    'SELECT [LMITNO] INTO ##TABLETEMP' + LTRIM(RTRIM(STR(@@SPID))) + '  
    FROM OPENQUERY(MAA,''SELECT DISTINCT [LMITNO] FROM MAA.ESMEL3.MVXDDTPRD.MILOMA 
    WHERE [LMITNO] LIKE ' + '''' + @ChemicalPreFix + '''' + ''')' 

간부 인합니다.

SELECT [LMITNO] INTO ##TABLETEMP91 FROM 
    OPENQUERY(MAA,'SELECT DISTINCT [LMITNO] 
    FROM MAA.ESMEL3.MVXDDTPRD.MILOMA WHERE [LMITNO] LIKE ''CHE%''') 

하지만 오류는 CHE % 근처에 잘못된 구문이 있다는 것입니다. 그러나 구문은 괜찮아 보입니다. 뭐가 문제 야?

답변

1
귀하의 질의 문에서의 서버 이름의 포함을 제외하고, 잘 보이는

는이 같은 읽어야

SET @Qry = 

    'SELECT [LMITNO] INTO ##TABLETEMP' + LTRIM(RTRIM(STR(@@SPID))) + '  
    FROM OPENQUERY(MAA,''SELECT DISTINCT [LMITNO] FROM ESMEL3.MVXDDTPRD.MILOMA 
    WHERE [LMITNO] LIKE ' + '''' + @ChemicalPreFix + '''' + ''')' 
1

이 시도하십시오

SET @Qry = 

'SELECT [LMITNO] INTO ##TABLETEMP' + LTRIM(RTRIM(STR(@@SPID))) + '  
FROM OPENQUERY(MAA,''SELECT DISTINCT [LMITNO] FROM MAA.ESMEL3.MVXDDTPRD.MILOMA 
WHERE [LMITNO] LIKE ' + '''''' + @ChemicalPreFix + '''''' + ''')' 

그것은 아래의 쿼리를 제공합니다

SELECT [LMITNO] INTO ##TABLETEMP53 FROM 
OPENQUERY(MAA,'SELECT DISTINCT [LMITNO] FROM MAA.ESMEL3.MVXDDTPRD.MILOMA 
WHERE [LMITNO] LIKE ''CHE%''') 

그것은 성공적으로 구문 분석됩니다. 동적 SQL이므로 SELECT 쿼리의 변수에 따옴표가 필요합니다.