1. 程式人生 > >oracle顯示遊標和遊標for迴圈案例

oracle顯示遊標和遊標for迴圈案例

顯式遊標:
--顯式遊標案例
declare
 cursor emp_cursor(department in number default 20)
 is select empno,ename,job,sal from emp where deptno=department;
 type employee is record(
 id emp.empno%type,
 name emp.ename%type,
 job emp.job%type,
 sal emp.sal%type
 );
 emp_row employee;
 begin
   open emp_cursor(30);
     loop
     fetch emp_cursor into emp_row;
     exit when emp_cursor%notfound;
     dbms_output.put('員工編號 '||emp_row.id);
     dbms_output.put(' 姓名 '||emp_row.name);
     dbms_output.put(' 職位 '||emp_row.job);
     dbms_output.put_line(' 薪水 '||emp_row.sal);
   end loop;
    dbms_output.put_line('。。。。');
   close emp_cursor;
 end;
 
 --顯示遊標案例<span style="color:#FF0000;">寫法二</span>,效果同上
declare
 cursor emp_cursor(department in number default 20)
 is select empno,ename,job,sal from emp where deptno=department;
 type employee is record(
 id emp.empno%type,
 name emp.ename%type,
 job emp.job%type,
 sal emp.sal%type
 );
 emp_row employee;
 begin
   open emp_cursor(30);
     
     fetch emp_cursor into emp_row;      --fetch1
     while emp_cursor%found loop
     dbms_output.put('員工編號 '||emp_row.id);
     dbms_output.put(' 姓名 '||emp_row.name);
     dbms_output.put(' 職位 '||emp_row.job);
     dbms_output.put_line(' 薪水 '||emp_row.sal);
     --從遊標中提取下一行資料
     fetch emp_cursor into emp_row;       --fetch2
   end loop;
   close emp_cursor;
 end;
ps:我一開始覺得這裡有兩個fetch有點多餘,覺得一個就夠了,於是我只在
while emp_cursor%found loop
這句之後寫了一個fetch語句,但是執行無顯示結果,最本質的原因我可能不是很清楚,縱觀上述兩迴圈方法,我認為,必須先提取資料再判斷 emp_cursor%found方可。

遊標for迴圈(在使用遊標for迴圈時,一定不要使用open語句,fetch語句和close語句,否則將產生錯誤)

--遊標for迴圈
 declare 
  cursor emp_cursor is select * from emp where deptno=10;
  row emp_cursor%rowtype;
 begin
  for row in emp_cursor loop
   dbms_output.put(row.empno|| ' ');
   dbms_output.put(row.ename|| ' ');
   dbms_output.put(row.job|| ' ');
   dbms_output.put_line(row.sal);
  end loop;
 end;
  


相關推薦

oracle顯示遊標遊標for迴圈案例

顯式遊標:--顯式遊標案例 declare cursor emp_cursor(department in number default 20) is select empno,ename,job,sal from emp where deptno=department

Iterator新增for迴圈

(1)迭代器並非是容器,它的功能是遍歷容器。 (2)要想遍歷,必須知道容器的確切型別,然後編碼進行遍歷,不同的容器有不同的遍歷方式,但是如果使用迭代器的話,就不需要知道容器的型別,因為可以用一種方式遍歷容器中的物件 一、Iterator介面 1、 (1)集合是對C

141-練習67 for迴圈for迴圈的巢狀呼叫

6,程式設計輸出1~100中能被3整除但不能被5整除的數,並統計有多少個這樣的數。 for (int i = 1; i <= 100; i++) { if ((i % 3 == 0) && (i %

ArrayList的迭代器 超強for迴圈

超強for迴圈 也是用迭代器實現的。有個面試官,問去除ArrayList的一些元素,當時寫的是for迴圈,判斷去除,然後左邊退一位。他說不安全。用迭代器遍歷安全,迭代器包含一個remove方法,去除元素後自帶遊標退一位。主要三個方法,hasnext,next,和remove

lambda表示式foreach普通for迴圈效能比較

java 8的新特性之一就是lambda表示式,其中lambda表示式的foreach迴圈最為引人注目,現比較下lambda表示式foreach和普通for迴圈的效能測試。程式碼如下: public static void main(String[] args){ List

退出一個while無限迴圈多重for迴圈

       平常我們接觸最多的還有知道的一般都是while中判斷條件不成立後直接break來終止迴圈,後面發現while中直接返回一個空也是可以退出的,雖然簡單但是做個記錄。畢竟後面學java這麼久才留意的。 package page5; public class W

JAVA foreach普通for迴圈是否需要判斷為null

測試增強for迴圈是否需要判斷為null 例1: public static void main(String[] args) { List<Object> list = n

手動提交事務for迴圈裡進行事務控制及宣告式事務的使用例項!

事務場景:需要做一個跑批進行一個流程的實現,0.獲取異常資料(多條),for迴圈對單條資料進行下面三個操作:1).呼叫別的系統進行查詢,2).查詢自己的庫中資料,3)更改自己資料庫中的資料狀態。此時就需要對單條資料操作的3步驟進行事務控制,使用的過程中發現兩個解決辦法:第一:

Oracle儲存過程中游標For迴圈使用

   procedure copy(a_id int) is     cursor t_cursor is       select * from table f where f.id = a_id;       v_row table%rowtype; begin

for迴圈案例(上)

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head&g

-for迴圈案例(下)

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head&g

02-for迴圈案例

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head&g

用遞迴普通for迴圈分別求 1+2+3+...+n

最近在複習遞迴演算法時,  腦海突然想能否用剛剛學到的遞迴方法去解高斯問題呢? 然後自己動手用常規for迴圈和遞迴來程式設計,  看看二者有何不同,  最後的程式碼如下: 雖然有點簡單, 但是還是值得

簡單瞭解一下oracle中的顯示遊標儲存過程

遊標   遊標主要分兩類動態和靜態遊標,靜態遊標是編譯時知道明確的select語句的遊標,靜態遊標分類兩種,顯示遊標和靜態遊標,這裡只說顯示遊標 顯示遊標 declare name emp.ename%type; sal emp.sal%type; --宣

Oracle PL/SQL顯示遊標、隱式遊標遊標迴圈

dba基礎課程:Oracle PL/SQL顯示遊標、隱式遊標、遊標迴圈 顯示遊標 使用遊標順序 1.宣告遊標 2.開啟遊標 3.讀取遊標 4.資料是否為空,是關閉遊標,否繼續讀取 1.宣告遊標 cursor cur_name[(input

Oracle使用遊標更新資料 Oracle遊標之select for updatewhere current of 語句

Oracle使用遊標更新資料 2016年11月20日 13:15:49 hzwy23 閱讀數:5313 友情推廣 ###使用遊標修改資料 ####定義一個遊標,遊標名稱為 mycursor #####更新scott使用者中emp表中empno

oracle遊標用法,open for循環遊標fetch into用法上有什麼區別?

  open的時候不會讀資料,FETCH才讀。 1、說明遊標。說明遊標的時候並不執行select語句。 declare <遊標名> cursor for <select語句>; 2、開啟遊標。開

Oracle 遊標for迴圈

/* 遊標的for迴圈 pl/sql語言提供了遊標的for迴圈語句,【自動執行遊標的open,fetch,close語句和迴圈語句的功能】,當進入迴圈時, 遊標for迴圈語句自動開啟遊標,並提取第一行遊標的資料,當程式處理完成當前所提取的資料而進入下一次迴圈時, 遊標for

Oracle遊標for迴圈

declare    cursor emp_cursor is select * from tg_test_user; begin    for tg_test_user in emp_cursor

SQL中的迴圈for迴圈遊標

--SQL中的迴圈、for迴圈、遊標 --1. 利用遊標迴圈更新、刪除MemberAccount表中的資料 DECLARE My_Cursor CURSOR --定義遊標 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到遊標中 OPE