oracle中游標的使用(一)

2021-08-08 09:30:48 字數 2462 閱讀 7376

定義游標

cursor  《游標名稱》  is  

開啟游標

open 《游標名稱》 ;

取出使用游標

fetch 《游標名稱》 into 變數1,變數2…..變數n;

或者 fetch 《游標名稱》 into 行物件;

關閉游標

close 《游標名稱》;

%notfound

如果取出游標失敗,也就是fetch 語句失敗,則該屬性是 true,否則為 false

%found

如果取出游標成功,也就是fetch語句成功,該屬性為 true,否則為 false

rowcount

返回游標當前行的行數

isopen

如果游標是開著的,則返回 true ,否則返回false

例子演示

declare

--定義游標 ,將 t-emp表中的 empid,empname,emptelep放入游標中

cursor c_emp is select empid,empname,emptelep from t_emp;

p_empid t_emp.empid%type;

p_empname t_emp.empname%type;

p_emptelep t_emp.emptelep%type;

begin

--開啟游標

open c_emp;

loop

--取出游標

fetch c_emp into p_empname,p_empid,p_emptelep ;

if c_emp%found then

dbms_output.put_line('員工id 是' || p_empid || ',員工姓名是' || p_empname || ',員工**是' || p_emptelep);

end if;

exit when c_emp%notfound; --當游標找不到時,退出迴圈

end loop;

end;

輸出結果是:

怎麼回事? 怎麼員工id 是 姓名了,姓名的結果是 id值,注意:

我在 定義 游標的 語句是:

cursor c_emp is select empid,empname,emptelep from t_emp;

empid 在前面,empname在後面

但是我在取出游標的時候:

fetch c_emp into p_empname,p_empid,p_emptelep ;

在這裡,我將順序換了一下,所以結果就出錯了,可以得知:

* 我在定義游標的時候,放入欄位的順序是什麼樣子的,取出游標的時候,也要按什麼樣子的順序取出 *

那麼,當我定義游標是select * from t_emp的時候,一定要注意欄位的順序,可以先檢視該錶。

正確的輸出結果是:

例子演示二

declare

--給游標設定引數,部門id,注意,一定要where id = p_id

cursor c_emp(p_id t_emp.id%type) is select empid,empname,emptelep from t_emp where id = p_id;

--在定義 行物件 的時候,可以將型別定義成游標的型別

--在取 行物件 中每個欄位的時候,可以 行物件.欄位名 ,具體看下面輸出

p_emp c_emp%rowtype;

begin

--開啟游標的時候,給引數賦值,指定部門編號是 111

open c_emp(111);--放入引數

fetch c_emp into p_emp;

while c_emp%found

loop

--取出行物件的每個字段,可以 行物件.欄位 ,該字段是表中的真實欄位名

dbms_output.put_line('員工的編號是' || p_emp.empid || ',員工的姓名是' || p_emp.empname || ',員工的**是' || p_emp.emptelep);

--在loop迴圈中,取出游標,並移動到下乙個位置

fetch c_emp into p_emp;

end loop;

close c_emp;

end;

結果是:

oracle游標的使用

當select語句從資料庫中返回的記錄多餘一條時,就可以使用游標 cursor 游標可以理解為一次訪問乙個的一組記錄。select語句將列提取到游標中,然後根據游標取得記錄。使用游標時需要遵從以下的5個步驟 1 宣告一些變數,用於儲存select語句返回列值 2 宣告游標,並制定select語句 3...

oracle游標的使用

游標 cursor 也稱之為游標,從字面意思理解就是游動的游標。游標是對映在結果集中一行資料上的位置實體。游標是從表中檢索出 結果集,並從中每次指向一條記錄進行互動的機制。cursor 游標名 引數名 資料型別 引數名 資料型別 is select 語句 示例 無參游標 cursor c emp i...

ORACLE游標的使用

1 游標的說明 游標是一種向包含多條資料記錄的結果集中每次讀取一行的機制,逐行處理查詢結果,以程式設計的方式訪問資料庫。可以把游標當成指標,可以指定結果集中的任何位置,然後允許使用者對指定位置的資料進行操作。sql的游標是一種臨時資料庫物件,可以臨時存放資料表中的資料行副本,也可以指向儲存在資料表中...