programing

RefCursor 반환 유형을 사용하여 Oracle 저장 프로시저를 테스트하는 방법

magicmemo 2023. 3. 17. 20:33
반응형

RefCursor 반환 유형을 사용하여 Oracle 저장 프로시저를 테스트하는 방법

SQL Developer 또는 Embacardero Rapid XE2에서 Oracle 스토어드 프로시저를 테스트하는 방법에 대한 좋은 설명을 찾고 있습니다.감사해요.

뭐랄까

create or replace procedure my_proc( p_rc OUT SYS_REFCURSOR )
as
begin
  open p_rc
   for select 1 col1
         from dual;
end;
/

variable rc refcursor;
exec my_proc( :rc );
print rc;

는 SQL*Plus 또는 SQL Developer에서 동작합니다.저는 Embacardero Rapid XE2에 대한 경험이 없기 때문에 이러한 SQL*Plus 명령을 지원하는지 알 수 없습니다.

다음과 같은 기능을 통해 거의 모든 클라이언트에서 절차를 테스트할 수 있습니다.

DECLARE 
  v_cur SYS_REFCURSOR;
  v_a   VARCHAR2(10);
  v_b   VARCHAR2(10);
BEGIN
  your_proc(v_cur);

  LOOP
    FETCH v_cur INTO v_a, v_b;
    EXIT WHEN v_cur%NOTFOUND;
    dbms_output.put_line(v_a || ' ' || v_b);
  END LOOP;
  CLOSE v_cur;
END;

기본적으로 테스트 하니스는 다음 정의를 지원해야 합니다.SYS_REFCURSOR변수 및 정의한 변수를 전달하면서 프로시저를 호출한 후 커서 결과 세트를 루프하는 기능.PL/SQL은 이 모든 것을 수행하며, 익명 블록은 설정 및 유지보수가 쉽고, 적응성이 뛰어나며, PL/SQL을 사용하는 모든 사용자가 읽을 수 있습니다.

다른 방법은 비슷하지만 동일한 작업을 수행하는 명명된 프로시저를 구축하는 것입니다.클라이언트에 디버거(SQL Developer, PL/SQL Developer, TOAD 등)가 있다고 가정하면 실행 단계를 밟을 수 있습니다.

SQL Developer에서 패키지 본문을 마우스 오른쪽 버튼으로 클릭하고 RUN을 선택할 수 있습니다.'PL/SQL 실행' 창에서 PL/SQL 블록을 편집할 수 있습니다.확인을 클릭하면 출력 변수 탭이 있는 '출력 변수 - 로그'라는 창 창이 나타납니다.왼쪽에서 출력 변수를 선택하면 오른쪽에 결과가 표시됩니다.매우 편리하고 빠릅니다.

T-SQL과 함께 Rapid를 사용해 봤는데 비슷한 것이 있었던 것 같아요.

DCookie의 예와 같이 커서를 통해 루프하는 자신만의 delcare-begin-end 스크립트를 작성하는 것은 항상 때때로 수행하는 좋은 연습입니다.이 기능은 어떤 경우에도 작동하며 코드가 작동한다는 것을 알 수 있습니다.

Toad 10.1.1.8에서는 다음을 사용합니다.

variable salida refcursor
exec MY_PKG.MY_PRC(1, 2, 3, :salida)  -- 1, 2, 3 are params
print salida

다음으로 스크립트로 실행합니다.

이 링크로 충분할 것 같아요.오라클 절차를 실행하는 방법을 찾던 중 발견했습니다.

페이지 링크

간단한 설명:

--cursor variable declaration 
variable Out_Ref_Cursor refcursor;
--execute procedure 
execute get_employees_name(IN_Variable,:Out_Ref_Cursor);
--display result referenced by ref cursor.
print Out_Ref_Cursor;
create or replace procedure my_proc(  v_number IN number,p_rc OUT SYS_REFCURSOR )
as
begin
open p_rc
for select 1 col1
     from dual;
 end;
 /

저장 프로시저를 호출하는 함수의 lie를 작성합니다.

 create or replace function my_proc_test(v_number IN NUMBER) RETURN sys_refcursor
 as
 p_rc sys_refcursor;
 begin
 my_proc(v_number,p_rc);
 return p_rc;
 end
 /

SQL Developer 편집기에서 이 SQL 쿼리를 실행할 수 있습니다.

 SELECT my_proc_test(3) FROM DUAL;

콘솔 우클릭 후 단일 레코드 뷰에서 결과를 확인하고 결과를 편집하면 참조 커서로 반환된 모든 레코드를 볼 수 있습니다.

언급URL : https://stackoverflow.com/questions/6781916/how-to-test-an-oracle-stored-procedure-with-refcursor-return-type

반응형