2014-07-22 2 views
0

DB2 개발을 처음 사용했습니다. 파일에서 레코드를 읽는 프로 시저를 작성하려고합니다. 모든 것이 잘되고 있지만 내 절차에는 결과가 표시되지 않습니다.Db2 저장 프로 시저 결과 없음

이것은 내 코드입니다.이 번호를 통해 제발 부탁합니다. & 제가 잘못하면 친절하게 대답 해주세요.

CREATE OR REPLACE PROCEDURE REA_DT() 
LANGUAGE SQL 
    DYNAMIC RESULT SETS 1 
    P1: BEGIN 
    DECLARE TB_NAME VARCHAR(128); 
    DECLARE EOF INT DEFAULT 0; 
    DECLARE STMT VARCHAR(500); 

    -- Declare cursor 
    DECLARE cursor1 CURSOR WITH RETURN for 
    SELECT * FROM MT; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET EOF=1; 
    -- Cursor left open for client application 
    OPEN cursor1; 
    WHILE EOF=0 
    DO 
    FETCH FROM cursor1 INTO TB_NAME; 

    END WHILE; 
    CLOSE cursor1; 
END P1 

변수 값을 표시하기 위해 FETCH 뒤에 무엇을 배치해야할지 모르겠다. 미리 감사드립니다.

이제 테이블에서 모든 레코드를 볼 수 있습니다. 왜 이런 일이 있었는지 알려주시겠습니까? 이것은 내 원하는 결과가 아닙니다. 나는 하나씩 테이블에서 기록을 읽을 것으로 기대하고 있습니다.

답변

0

WITH RETURN을 사용하여 커서를 선언 했으므로 저장 프로 시저에서 결과 집합을 프로 시저를 호출하는 응용 프로그램으로 반환하도록 지정했습니다.

단순히 OPEN CURSOR 문을 실행하는 대신 WHILE 루프를 사용하여 커서에서 모든 행을 읽은 다음 커서를 닫습니다. 따라서 저장 프로 시저를 호출 한 응용 프로그램에는 아무 것도 반환되지 않습니다.

호출 응용 프로그램이 결과를 처리 할 수 ​​있도록 커서를 리턴하려면 프로 시저가 끝나기 전에 OPEN CURSOR 문을 발행하면됩니다. FETCH FROM 또는 CLOSE 커서를 사용하지 마십시오.