>

어떤 사람이 언제 어떻게 sys_refcursor를 사용해야하는지에 대한 작은 설명을 해줄 수 있습니까?

  • 답변 # 1

    커서는 쿼리에 대한 결과 집합에 대한 포인터입니다. sys_refcursor 를 반환함으로써  클라이언트가 쿼리에서 필요한만큼 행을 페치 할 수 있습니다. 상태 저장 응용 프로그램에서는 결과를 페이징하는 데 사용할 수 있습니다.

    커서가 가져 오는 행 수와 중지시기를 클라이언트에게 전적으로 의존하므로 배열을 반환하는 PL/SQL 함수를 작성하는 것보다 커서가 더 유연합니다. 즉,이 추가 유연성이 유용한 경우를 많이 찾지 못했습니다.

    와이즈 비즈에 주목할 가치가있다  은 형식이 잘못되었으므로 where 절이나 where 절뿐만 아니라 숫자와 유형이 다른 쿼리에 대한 포인터를 반환 할 수 있습니다. 또는 결과 집합의 열이 고정 된 강력한 형식의 커서를 사용할 수 있습니다.

    이렇게하면 다음과 같이 다른 쿼리를 반환하는 함수를 작성할 수 있습니다.

    sys_refcursor
    
    

    그러나 pyzwyz를 사용하는 경우  위와 같은 일반적인 "쿼리 열기"함수를 만들려면 아마도 뭔가 잘못하고있을 가능성이 있습니다!

  • 답변 # 2

    예를 들어 pl/sql이 있기 때문에 객체를 정의 할 수 있습니다. 행을 나타내고 해당 객체의 pl/sql 테이블을 정의합니다.

    create function get_data ( type varchar2 ) return sys_refcursor as
      ret_cur sys_refcursor;
    begin
      if type = 'EMP' then
        open ret_cur for select * from emp;
      elsif type = 'DEPT' then
        open ret_cur for select * from dept;
      end if;
      return ret_cur;
    end;
    
    

    그리고 끝으로

    sys_refcursor
    
    

    따라서 데이터베이스 테이블에서 종종 고밀도 및/또는 암호 직접 쿼리 인 mongo를 구성하는 대신 내부 테이블을 작성하고 pl/sql의 전체 성능을 갖도록 채울 수 있습니다. 그리고 결과 집합을 수집하는 클라이언트는 더 현명하지 않습니다. 그리고 데이터베이스 테이블을 변경하는 것보다 관리 테이블에서 내부 테이블의 정의를 변경하는 것이 더 쉽습니다.

    Jasper와 같은 보고서 생성기를 사용하는 경우 SQL을 보고서에서 데이터베이스로 푸시하고 프로 시저를 호출하여 레코드 세트를 가져 와서 보고서 측을 형식화에 집중할 수 있습니다.

    create type T_MY_TABLE as table of t_my_object;

  • 이전 SQL Server Management Studio를 사용하여 Azure SQL 데이터베이스 복사본 만들기
  • 다음 Windows 81에 SQL Server 2008 SP3을 설치하지 못했습니다