日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle入门(十四.13)之带参数的游标

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle入门(十四.13)之带参数的游标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、帶參數的游標

????參數是一個變量,其名稱用于游標聲明中。 當游標打開時,參數值被傳遞給Oracle服務器,Oracle服務器使用它來決定要將哪些行檢索到光標的活動集中。

????這意味著您可以在塊中多次打開和關閉顯式光標,或者在同一個塊的不同執行中打開和關閉顯式光標,每次都返回一個不同的活動集。

????考慮將任何region_id傳遞給游標的示例,并返回該區域中國家/地區的名稱。

例子

DECLARECURSOR c_country (p_region_id NUMBER) ISSELECT country_id, country_nameFROM wf_countriesWHERE region_id = p_region_id;v_country_record c_country%ROWTYPE; BEGINOPEN c_country (5); --更改為需要的區域。LOOPFETCH c_country INTO v_country_record;EXIT WHEN c_country%NOTFOUND;DBMS_OUTPUT.PUT_LINE(v_country_record.country_id|| ' ' || v_country_record.country_name);END LOOP;CLOSE c_country; END;


二、參數游標用法

(1)使用參數語法定義游標

在游標聲明中命名的每個參數在OPEN語句中必須具有對應的值。 參數數據類型與標量變量的數據類型相同,但不給它們大小。 參數名稱在游標SELECT語句的WHERE子句中使用。

CURSOR cursor_name[(parameter_name datatype, ...)] ISselect_statement;在語法中:
cursor_name是聲明的游標的PL / SQL標識符
?parameter_name是參數的名稱
?數據類型是參數的標量數據類型

?select_statement是一個沒有INTO子句的SELECT語句

用參數打開游標

以下是用參數打開游標的語法:

OPEN cursor_name(parameter_value,.....) ;

(2)帶參數的游標

游標打開時將參數值傳遞給游標。 因此,您可以多次打開一個顯式光標并每次獲取一個不同的活動集。 在以下示例中,游標會多次打開。


具有參數的光標的另一個例子

DECLARE v_deptid employees.department_id%TYPE; CURSOR empcur (p_deptid NUMBER) ISSELECT employee_id, salaryFROM employeesWHERE department_id = p_deptid; v_emp_rec empcur%ROWTYPE; BEGIN SELECT MAX(department_id) INTO v_deptidFROM employees; OPEN empcur(v_deptid); LOOPFETCH empcur INTO v_emp_rec;EXIT WHEN empcur%NOTFOUND;DBMS_OUTPUT.PUT_LINE(v_emp_rec.employee_id|| ' ' || v_emp_rec.salary); END LOOP; CLOSE empcur; END;

(3)光標FOR循環參數

如果需要,我們可以使用游標FOR循環:

DECLARECURSOR emp_cursor (p_deptno NUMBER) ISSELECT employee_id, last_nameFROM employeesWHERE department_id = p_deptno; BEGINFOR v_emp_record IN emp_cursor(10) LOOP….END LOOP; END;

(4)具有多個參數的游標

在下面的例子中,聲明了一個游標并用兩個參數調用:

DECLARECURSOR countrycursor2 (p_region_id NUMBER,p_population NUMBER) ISSELECT country_id, country_name, populationFROM wf_countriesWHERE region_id = p_region_idOR population > p_population; BEGINFOR v_country_record IN countrycursor2(145,10000000) LOOP DBMS_OUTPUT.PUT_LINE(v_country_record.country_id ||' '|| v_country_record. country_name||' '|| v_country_record.population); END LOOP; END;另一個例子
該光標可以獲取所有收入超過10000美元的IT程序員。
DECLARECURSOR emp_cursor3 (p_job VARCHAR2,p_salary NUMBER) ISSELECT employee_id, last_nameFROM employeesWHERE job_id = p_jobAND salary > p_salary; BEGINFOR v_emp_record IN emp_cursor3('IT_PROG', 10000) LOOPDBMS_OUTPUT.PUT_LINE(v_emp_record.employee_id ||' ' ||v_emp_record.last_name);END LOOP; END;


總結

以上是生活随笔為你收集整理的Oracle入门(十四.13)之带参数的游标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。