반응형
PL/SQL에서 돌아오는 커서를 닫는 방법은?
저는 PL/SQL을 처음 접했는데 이제 막 학습 과정에서 커서를 잡았습니다.저장된 프로시저 파라미터가 유형과 함께OUT SYS_REFCURSOR
C 언어의 포인터처럼 '데이터를 반환'하는 것이 목적인 것으로 알고 있습니다.나는 누가 그런 문을 닫을 것인지 궁금했습니다.SYS_REFCURSOR
절차가 열려야 하는데 닫지 못하는 경우 parameter? (절차가 종료되는 경우)OUT SYS_REFCURSOR
그러면 반환할 데이터가 없습니다.
또한, 저는 저장된 절차 이외에 외부 기능에 의존하는 것은 나쁜 설계라고 생각합니다.OUT SYS_REFCURSOR
커서를 닫을 매개변수.커서를 사용하지 않고 저장 프로시저에서 테이블을 반환할 수 있는 방법이 있습니까?
커서가 실제로 어디서 열렸는지에 관계없이 커서가 끝나면 닫기만 하면 됩니다.
-- A function to return a SYS_REFCURSOR
CREATE OR REPLACE FUNCTION f_c RETURN SYS_REFCURSOR IS
cur SYS_REFCURSOR;
BEGIN
OPEN cur FOR SELECT LEVEL FROM dual CONNECT BY LEVEL < 10;
RETURN cur;
END;
다음은 샘플 런입니다.
DECLARE
cc SYS_REFCURSOR;
r VARCHAR2(10);
BEGIN
cc := f_c; -- Get the cursor from the function
LOOP
FETCH cc INTO r;
EXIT WHEN cc%NOTFOUND;
dbms_output.put_line('Output is: '||r);
END LOOP;
CLOSE cc; -- Close the SYS_REFCURSOR returned from the function
END;
/
Output is: 1
Output is: 2
Output is: 3
Output is: 4
Output is: 5
Output is: 6
Output is: 7
Output is: 8
Output is: 9
함수 또는 프로시저에서 값 집합을 반환하는 경우, 이 주제에 대한 또 다른 SO 질문이 있습니다.
언급URL : https://stackoverflow.com/questions/6128101/how-to-close-a-returning-cursor-in-pl-sql
반응형
'programing' 카테고리의 다른 글
함수 포인터를 반환하는 함수에 대한 C 구문 (0) | 2023.10.03 |
---|---|
팬더 - 값 없음 필터링 (0) | 2023.10.03 |
브라우저 콘솔에서 http 오류가 기록되지 않도록 방지 (0) | 2023.10.03 |
jQuery에서 serialized form data를 수정하려면 어떻게 해야 합니까? (0) | 2023.10.03 |
여러 덱스 파일에서 Landroid/support/v4/Accessibility Service/AccessibilityServiceInfoCompat를 정의합니다. (0) | 2023.10.03 |