반응형
'WITH' 절을 사용하여 SQL Server 쿼리에 이상한 오류가 발생함
다음 쿼리:
WITH
CteProductLookup(ProductId, oid)
AS
(
SELECT p.ProductID, p.oid
FROM [dbo].[ME_CatalogProducts] p
)
SELECT
rel.Name as RelationshipName,
pl.ProductId as FromProductId,
pl2.ProductId as ToProductId
FROM
(
[dbo].[ME_CatalogRelationships] rel
INNER JOIN CteProductLookup pl
ON pl.oid = rel.from_oid
)
INNER JOIN CteProductLookup pl2
ON pl2.oid = rel.to_oid
WHERE
rel.Name = 'BundleItem' AND
pl.ProductId = 'MX12345';
다음 오류가 발생하고 있습니다.
Msg 319, 레벨 15, 상태 1, 라인 5 키워드 'with' 근처의 구문이 잘못되었습니다.이 문이 공통 테이블 식, xml namespaces 절 또는 변경 추적 컨텍스트 절인 경우 이전 문은 세미콜론으로 종료되어야 합니다.
실행 시에만.관리 스튜디오의 sql 문에 오류/경고가 없습니다.
아이디어 있어요?
항상 다음과 같은 문장과 함께 사용합니다.;WITH
그러면 이 오류가 발생하지 않을 것입니다.WITH 명령에는 다음이 필요했습니다.;
이 명령과 이전 명령 사이에서 항상 사용합니다.;WITH
당신은 이것을 하는 것을 절대 기억할 필요가 없을 것입니다.
공통 테이블 식을 만들고 사용하기 위한 지침 섹션에서 공통 테이블 식을 사용하여(Transact-SQL)를 참조하십시오.
배치의 일부인 문에 CTE를 사용하는 경우 앞의 문 뒤에 세미콜론이 와야 합니다.
;WITH
CteProductLookup(ProductId, oid)
AS
...
WITH 키워드 바로 앞에 세미콜론을 넣는 것이 합법적이어야 합니다.
경우에 따라 테이블 힌트가 있고 WITH 절과 힌트 사이에 공백이 있는 경우에도 이 문제가 발생합니다. 따라서 다음과 같이 입력하는 것이 좋습니다.
SELECT Column1 FROM Table1 t1 WITH(NOLOCK)
INNER JOIN Table2 t2 WITH(NOLOCK) ON t1.Column1 = t2.Column1
그리고 다음은 아닙니다.
SELECT Column1 FROM Table1 t1 WITH (NOLOCK)
INNER JOIN Table2 t2 WITH (NOLOCK) ON t1.Column1 = t2.Column1
언급URL : https://stackoverflow.com/questions/2746916/getting-an-odd-error-sql-server-query-using-with-clause
반응형
'IT' 카테고리의 다른 글
python 명령줄을 종료하는 중 (0) | 2023.07.07 |
---|---|
Spring Boot 통합 시 @Schedule 사용 안 함시험 (0) | 2023.07.07 |
쿼리에서 고유하게 사용해야 합니까? (0) | 2023.07.07 |
vuej의 서버에서 데이터를 가져오는 방법은 무엇입니까? (0) | 2023.07.07 |
PL/SQL에서 커서를 루프하는 FETCH/FOR 간의 차이 (0) | 2023.07.07 |