"With"절이 포함 된 매우 복잡한 쿼리가 있습니다. 이 쿼리는 DB2 클라이언트에서 실행될 때 올바르게 작동합니다. 그러나 동일한 쿼리가 PL SQL 저장 프로 시저의 For 루프 커서 내에서 사용되는 경우 작동하지 않습니다. 저장 프로 시저를 데이터베이스에 적용하려고하면 아래와 같이 구문 오류가 발생합니다.DB2 PL의 for 루프 커서 내에서 "With"절을 사용하여 쿼리 SQL
SQL0104N An unexpected token "AS" was found following "col5)
for 루프는 다음과 같습니다.
FOR records AS cursors CURSOR FOR
(
WITH
temp1
(
col1, col2, col3, col4, col5
)
AS
(
SELECT
col1, col2, col3, col4, col5
FROM
table1
)
WITH
temp2
(
col6, col7, col8, col9, col10
)
AS
(
SELECT
col6, col7, col8, col9, col10
FROM
table2
)
SELECT col1, col2, col3, col4, col5, col6, co7, col8, col9, col10
FROM temp1, temp2
)
DO
-- Do Something here.
END FOR;
이 문제를 해결할 수 있습니까? 미리 감사드립니다.
루프에서 명령문을 실행하는 이유는 무엇입니까? SQL은 일반적으로 세트에서 작업하는 것이 훨씬 낫습니다. –
특별한 이유가 없습니다. SQL 쿼리에 의해 반환 된 데이터는 루프 내에서 수정됩니다. 내가 적용해야하는 다양한 변환 규칙이 있으며 레코드로 처리 된 결과가 데이터에 대해 많은 통제권을 부여한다고 생각합니다. 따라서 위에서 설명한 방법을 사용하십시오. – Abhi