2010-07-29 40 views
2

약간 이상한 문제가 있습니다.키워드 'with'(SQL) 근처의 구문이 잘못되었습니다.

나는이 SQL 실행하면 :

with ID_Table as ( 
    select row_number() over (order By SS_ID) As row_id, 
      ss_id 
     from slide_show) 
    select t0.* 
     from ID_Table as t1 
inner Join slide_show as t0 on t1.ss_id = t0.ss_id 
    where t1.row_id between 0 and 1 
order by t1.row_id asc; 

SQL Express의를, 그것은 실행하고 첫 번째 행을 반환로 (한도 MySQL은 0.1 유사)해야한다. 그러나 TADOQuery 개체를 통해 델파이에서 실행할 때 제목에 오류가 나타납니다. 나는 ADO 객체가 길을 따라 무엇인가하고 있다고 추측하지만 나는 무엇을 이해하지 못합니다.

참고 : 이것은 ADO 개체에 전달할 정확한 SQL입니다.

누구에게 아이디어가 있습니까?

답변

2

시도 :

SELECT t0.* 
FROM (SELECT row_number() over(ORDER BY SS_ID) AS row_id, ss_id FROM slide_show) AS t1 
INNER JOIN slide_show AS t0 
ON t1.ss_id = t0.ss_id 
WHERE t1.row_id BETWEEN 0 AND 1 
ORDER BY t1.row_id ASC; 
+0

이 내 생각이 너무 - 델파이/ADO 파생 테이블/인라인 뷰 anways 단지 문법 설탕입니다 WITH를 지원하지 않습니다 ... –

+0

실제로 게시하려고하는이 문장이 실제로 게시 된 후 나에게 발생했습니다. 나는 당신이 테이블을 위해 subselect 할 수 있다는 것을 몰랐다. 그래서 이것이 내가 필요한 것일 뿐이다. 매우 감사합니다! – webnoob

4

키워드로 기술적으로 앞의 문이 종료되어야한다, 말하기 일괄 그 전에 다른 문 (있을 경우 세미콜론가 선행 될 필요가 ";"하지만, WITH 앞에 놓기 만하면된다.)

내 생각 엔 ADO가 연결 변수 나 비슷한 것을 설정했기 때문에 WITH가 배치에서 더 이상 없음을 알 수 있습니다. "; WITH"로 변경하고 작동하는지 확인하십시오.

+0

필자는 SQL Server 나 Oracle과 같이 세미콜론으로 접미사를 사용하지 않았습니다. –

+1

나는 단지 내가 잘못 기억하고 있지 않아서 세미콜론없이 에러로 받았는지 테스트했다. 예를 들어 "SELECT 1 WITH My_CTE AS (SELECT 1 AS one)"은 실패하지만 세미콜론을 추가하면 효과가있었습니다. 이것은 SQL 2008에있었습니다. –

+0

모든 SQL 문을 세미콜론으로 끝내고 모범 사례를 구현합니다. 문제는 없습니다. – onedaywhen

2

연결 문자열에 지정한 OLE DB 공급자는 무엇입니까? WITH (CTE) 구문을 사용하려면 SQL 네이티브 클라이언트 공급자를 사용해야합니다.

Provider=SQLNCLI10.1

보다는 SQL Server OLE DB 공급자 예를 들어, 말

Provider=SQLOLEDB.1

+0

그게 유용한 정보, subselects가 작동하지 않을 상황을 위해, 이것은 좋을 것이다. – webnoob

2

이 시도 :

declare @a int 
with ID_Table as ( 
    select row_number() over (order By SS_ID) As row_id, 
      ss_id 
     from slide_show) 
    select t0.* 
     from ID_Table as t1 
inner Join slide_show as t0 on t1.ss_id = t0.ss_id 
    where t1.row_id between 0 and 1 
order by t1.row_id asc; 

//------------------------------ 
//with can not be the first row 
관련 문제