0
저는 오픈 쿼리에 변수를 전달하는 방법에 대한 연구를 해왔습니다. 다음은 내가 작성한 쿼리입니다.'08'근처에 잘못된 구문이 나타납니다. 오류
DECLARE @firstday int;
DECLARE @lastday int;
SELECT @firstday = CONVERT(nvarchar(8), (DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)), 112)
SELECT @lastday = CONVERT(nvarchar(8), (DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)), 112)
DECLARE @SqlCommand NVARCHAR(MAX) = N'SELECT * FROM OPENQUERY(EPAK,
''SELECT WOADAT,WOROUT,BCDESC,WDWO#,BCSIZE,BCCHG
FROM CUST INNER JOIN (BCDE INNER JOIN (WO2 INNER JOIN WO1
ON (WDCMP = WOCMP) AND (WDCUS# = WOCUS#) AND (WDWO# = WOWO#)) ON (BCCMPY = WDCMP)
AND (BCSIZE = WDSIZE) AND (BCCHG = WDCHG)) ON (CCMPNY = BCCMPY) AND (CCUST# = WDCUS#)
WHERE (((WOADAT) between @firstday and @lastday) AND ((WDCMP)=''08''))order by WDWO#'')'
EXEC sp_ExecuteSQL @SqlCommand;
내 연결된 서버가 DB2 서버 내가 내 쿼리를 실행할 때 나는 그것을 카릭을 두 배로 때 나는 다음과 같은 오류
Incorrect syntax near '08'.
을 얻고,이
SELECT @lastday = CONVERT(nvarchar(8), (DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)), 112)
을 강조 누군가가 한 번 살펴보고 오류가 무엇인지 알려 주실 수 있습니까? 당신은 인용 문자열이 쿼리로 전달되고있다
((WDCMP)=''''08''''))
:
12 초 만에 나를 때리십시오. :) – TMNT2014
또는 매개 변수화 - 내부 명령을 매개 변수로 선언하고 'sp_execsql'에 전달하십시오. 이런 식으로 두 개 이상의 중첩 된 따옴표를 처리 할 필요가 없습니다. –
따옴표를 추가하고 쿼리를 실행할 때이 오류가 있습니다. 연결된 서버 "EPAK"에 대해 OLE DB 공급자 "IBMDA400"메시지가 반환되었습니다. "SQL0206 : Column 또는 글로 z 변수 FIRSTDAY을 찾을 수 없음 원인 : * N의 * N 테이블의 컬럼으로 FIRSTDAY를 찾을 수 없으며 * N의 글로 z 변수로 FIRSTDAY가 발견되지 않았습니다. 테이블이 * N이면 FIRSTDAY는 참조 할 수있는 테이블 또는 뷰의 열 – cojimarmiami