Oracle 커서 사용 참고 문 인 스 턴 스 분석

커서 는 표 에서 결과 집합 을 검색 하고 그 중에서 매번 기록 을 가리 키 며 상호작용 을 하 는 메커니즘 이다.
역할.
지 정 된 결 과 는 특정 줄 의 위치 에 집중 된다4.567917.현재 결과 집합 위 치 를 바탕 으로 한 줄 또는 연속 적 인 몇 줄 을 검색 합 니 다4.567917.결과 집의 현재 위치 에서 줄 의 데 이 터 를 수정 합 니 다4.567917.다른 사용자 가 한 데이터 변경 에 대해 서로 다른 민감 성 단 계 를 정의 합 니 다4.567917.프로 그래 밍 방식 으로 데이터 베 이 스 를 방문 할 수 있 습 니 다간단 하고 실 용적 인 것:

Declare 
  --       
  Cursor Mycur Is 
    Select * From Emp; 
  Empinfo Emp%Rowtype; 
  Cou   Number; 
Begin 
  --         ,                 
  For Empinfo In Mycur Loop 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line('  :' || Cou || '      :' || Empinfo.Empno || '      :' || Empinfo.Ename); 
  End Loop; 
End; 
반복 해서 데 이 터 를 꺼 내 는 두 가지 쓰기:

Declare 
  --       
  Cursor Mycur Is 
    Select * From Emp; -- List (EmpPo)  
  Empinfo Emp%Rowtype; 
  Cou   Number; 
Begin 
  --         ,                 
  If Mycur%Isopen Then 
    Null; 
  Else 
    Open Mycur; 
  End If; 
  --          
  Fetch Mycur 
    Into Empinfo; 
  --               
  While (Mycur%Found) Loop 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line('  :' || Cou || '      :' || Empinfo.Empno || '      :' || Empinfo.Ename); 
    --     ,      
    Fetch Mycur 
      Into Empinfo; 
  End Loop; 
End; 
두 번 째 표기 법:

Declare 
  --      
  Cursor Mycur Is 
    Select * From Emp; 
  Empinfo Emp%Rowtype; 
  Cou   Number; 
Begin 
  --         ,                 
  If Mycur%Isopen Then 
    Null; 
  Else 
    Open Mycur; 
  End If; 
  Loop 
    --          
    Fetch Mycur 
      Into Empinfo; 
    Exit When Mycur%Notfound; 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line('  :' || Cou || '      :' || Empinfo.Empno || '      :' || Empinfo.Ename); 
  End Loop; 
End; 
저장 과정 에서 커서 사용 하기

Create Or Replace Procedure Myproc(Oi_Return Out Integer) Is 
  Cursor Mycur Is 
    Select * From Emp_0915; 
  Empinfo Emp_0915%Rowtype; 
  Cou   Number; 
  Exc_Return Exception; --             
Begin 
  If Mycur%Isopen Then 
    Null; 
  Else 
    Open Mycur; 
  End If; 
  Loop 
    Fetch Mycur 
      Into Empinfo; 
    Exit When Mycur%Notfound; 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line(Cou || '    ...'); 
    Update Emp_0915 t Set t.Sal = t.Sal + 1 Where t.Empno = Empinfo.Empno; 
    Dbms_Output.Put_Line(Cou || '    ...'); 
  End Loop; 
  Commit; 
  Oi_Return := 1; 
Exception 
  When Exc_Return Then 
    Rollback; 
    Oi_Return := 0; 
End; 
Oacle 에서 테스트:

Declare 
  Re Integer; 
Begin 
  Myproc(Re); 
  If Re = 1 Then 
    Dbms_Output.Put_Line(Re || ':    。。。'); 
  Else 
    Dbms_Output.Put_Line(Re || ':    _______'); 
  End If; 
End; 
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기