文章詳情頁
ORACLE PL/SQL 基礎2 (游標的學習)
瀏覽:7日期:2023-11-15 11:54:19
游標學習一> 游標是什么: 游標字面理解就是游動的光標。 用數據庫語言來描述:游標是映射在結果集中一行數據上的位置實體,有了游標 ; 用戶就可以訪問結果集中的任意一行數據了,將游標放置到某行后,即可對該行數據進行操作,例如提取當前 行的數據等等。二> 游標的分類: 顯式游標和隱式游標 顯示游標的使用需要4步: 1.聲明游標 CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype; 2.打開游標 open mycur(000627) 注:000627:參數 3.讀取數據 fetch mycur into varno,varprice; 4.關閉游標 close mycur;三> 游標的屬性 Oracle 游標有4個屬性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT %ISOPEN 判定游標是否被打開,假如打開%ISOPEN 等于true,否則等于false %FOUND; %NOTFOUND 判定游標所在的行是否有效,假如有效,則%FOUNDD等于true,否則等于false %ROWCOUNT 返回當前位置為止游標讀取的記錄行數。四> 示例: set serveroutput on;declare varno varchar2(20); varprice varchar2(20); CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype; begin if mycur%isopen = false then open mycur(000627); end if; fetch mycur into varno,varprice; while mycur%found loop dbms_output.put_line(varno','varprice); if mycur%rowcount=2 then exit; end if; fetch mycur into varno,varprice; end loop; close mycur; end; pl/sql 記錄 的結構和c語言中的結構體類似,是由一組數據項構成的邏輯單元。 pl/sql 記錄并不保存再數據庫中,它與變量一樣,保存再內存空間中,在使用記錄時候,要首先定義記錄結構 ,然后聲明記錄變量??梢园裵l/sql記錄看作是一個用戶自定義的數據類型。 set serveroutput on; declare type person is record ( empno; cus_emp_basic.emp_no%type, empzc; cus_emp_basic.emp_zc%type); person1 person; cursor mycur(vartype number)is select emp_no,emp_zc from cus_emp_basic where com_no=vartype; begin if mycur%isopen = false then open mycur(000627); end if; loop fetch mycur into person1; exit when mycur%notfound; dbms_output.put_line('雇員編號:'person1.empno',地址:'person1.empzc); end loop; close mycur; end; 典型游標for 循環 游標for循環示顯示游標的一種快捷使用方式,它使用for循環依次讀取結果集中的行 數據,當form循環開始時,游標自動打開(不需要open),每循環一次系統自動讀取 游標當前行的數據(不需要fetch),當退出for循環時,游標被自動關閉(不需要使用close) 使用游標for循環的時候不能使用open語句,fetch語句和close語句,否則會產生錯誤。 set serveroutput on; declare cursor mycur(vartype number)is select emp_no,emp_zc from cus_emp_basic where com_no=vartype; begin for; person in mycur(000627) loop dbms_output.put_line('雇員編號:'person.emp_no',地址:'person.emp_zc); end loop; end;
上一條:ORACLE中BFILE字段的使用研究下一條:Oracle函數列表速查
排行榜
