久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SYS

209次閱讀
沒有評論

共計 3394 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要講解了“SYS_REFCURSOR 作為過程參數的表現是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“SYS_REFCURSOR 作為過程參數的表現是什么”吧!

我創建了如下的表并填充數據:

CREATE TABLE plch_tab (item VARCHAR2 (10))
 
BEGIN
 INSERT INTO plch_tab
 VALUES ( Keyboard 
 INSERT INTO plch_tab
 VALUES ( Mouse 
 COMMIT;
/

然后我創建了這個函數,從游標變量取得一行數據并返回:

CREATE OR REPLACE FUNCTION plch_getitem ( plch_cur IN SYS_REFCURSOR)
 RETURN plch_tab.item%TYPE
 lvretval plch_tab.item%TYPE;
BEGIN
 FETCH plch_cur INTO lvretval;
 RETURN lvretval;
END plch_getitem;
/

現在我需要寫一個程序塊來獲取表里的數據行,并且顯示行數和最后一行的項目名稱。下面就是這個接近完成的版本:

DECLARE
 lvitem plch_tab.item%TYPE;
 test_cur SYS_REFCURSOR;
BEGIN
 OPEN test_cur FOR
 SELECT * FROM plch_tab ORDER BY item;
 /*FETCH*/
 DBMS_OUTPUT.put_line (Count =   || test_cur%ROWCOUNT);
 DBMS_OUTPUT.put_line ( Item =   || NVL (lvitem,  NOT SET 
 CLOSE test_cur;
/

下列的選項中哪些可用來代替 /*FETCH*/ 從而使得這個塊執行之后,屏幕上可以見到如下輸出?

Count = 2

Item = Mouse

 

(A)

FETCH test_cur INTO lvitem;
lvitem := plch_getitem (test_cur);
SQL  DECLARE
 2 lvitem plch_tab.item%TYPE;
 3 test_cur SYS_REFCURSOR;
 4 BEGIN
 5 OPEN test_cur FOR
 6 SELECT * FROM plch_tab ORDER BY item;
 7 
 8 FETCH test_cur
 9 INTO lvitem;
 10 lvitem := plch_getitem(test_cur);
 11 
 12 DBMS_OUTPUT.put_line(Count =   || test_cur%ROWCOUNT);
 13 DBMS_OUTPUT.put_line( Item =   || NVL(lvitem,  NOT SET 
 14 
 15 CLOSE test_cur;
 16 END;
 17 /
Count = 2
Item = Mouse
PL/SQL procedure successfully completed
SQL

(B)

lvitem := plch_getitem (test_cur);
lvitem := plch_getitem (test_cur);
SQL  DECLARE
 2 lvitem plch_tab.item%TYPE;
 3 test_cur SYS_REFCURSOR;
 4 BEGIN
 5 OPEN test_cur FOR
 6 SELECT * FROM plch_tab ORDER BY item;
 7 
 8 lvitem := plch_getitem(test_cur);
 9 lvitem := plch_getitem(test_cur);
 10 
 11 DBMS_OUTPUT.put_line(Count =   || test_cur%ROWCOUNT);
 12 DBMS_OUTPUT.put_line( Item =   || NVL(lvitem,  NOT SET 
 13 
 14 CLOSE test_cur;
 15 END;
 16 /
Count = 2
Item = Mouse
PL/SQL procedure successfully completed
SQL

(C)

lvitem := plch_getitem (test_cur);
FETCH test_cur INTO lvitem;
SQL  DECLARE
 2 lvitem plch_tab.item%TYPE;
 3 test_cur SYS_REFCURSOR;
 4 BEGIN
 5 OPEN test_cur FOR
 6 SELECT * FROM plch_tab ORDER BY item;
 7 
 8 lvitem := plch_getitem(test_cur);
 9 FETCH test_cur
 10 INTO lvitem;
 11 
 12 DBMS_OUTPUT.put_line(Count =   || test_cur%ROWCOUNT);
 13 DBMS_OUTPUT.put_line( Item =   || NVL(lvitem,  NOT SET 
 14 
 15 CLOSE test_cur;
 16 END;
 17 /
Count = 2
Item = Mouse
PL/SQL procedure successfully completed
SQL

(D)

lvitem := plch_getitem (test_cur);
FETCH plch_cur INTO lvitem;
SQL  DECLARE
 2 lvitem plch_tab.item%TYPE;
 3 test_cur SYS_REFCURSOR;
 4 BEGIN
 5 OPEN test_cur FOR
 6 SELECT * FROM plch_tab ORDER BY item;
 7 
 8 lvitem := plch_getitem(test_cur);
 9 FETCH plch_cur
 10 INTO lvitem;
 11 
 12 DBMS_OUTPUT.put_line(Count =   || test_cur%ROWCOUNT);
 13 DBMS_OUTPUT.put_line( Item =   || NVL(lvitem,  NOT SET 
 14 
 15 CLOSE test_cur;
 16 END;
 17 /
DECLARE
 lvitem plch_tab.item%TYPE;
 test_cur SYS_REFCURSOR;
BEGIN
 OPEN test_cur FOR
 SELECT * FROM plch_tab ORDER BY item;
 lvitem := plch_getitem(test_cur);
 FETCH plch_cur
 INTO lvitem;
 DBMS_OUTPUT.put_line(Count =   || test_cur%ROWCOUNT);
 DBMS_OUTPUT.put_line( Item =   || NVL(lvitem,  NOT SET 
 CLOSE test_cur;
ORA-06550:  第  9  行,  第  9  列: 
PLS-00201:  必須聲明標識符   PLCH_CUR 
ORA-06550:  第  9  行,  第  3  列: 
PL/SQL: SQL Statement ignored
SQL
 答案 ABC.  答案 D 錯誤因為 plch_cur 這個名稱在函數之外是不可見的。REF CURSOR 作為 IN 參數(不需要定義為 IN OUT),在 FETCH 之后游標仍然會前移,所以你調用之后再 FETCH 會取到下一行。

感謝各位的閱讀,以上就是“SYS_REFCURSOR 作為過程參數的表現是什么”的內容了,經過本文的學習后,相信大家對 SYS_REFCURSOR 作為過程參數的表現是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-26發表,共計3394字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 贡觉县| 闻喜县| 罗平县| 洱源县| 金门县| 汕尾市| 新兴县| 岗巴县| 桑日县| 钦州市| 连江县| 宜良县| 杨浦区| 科技| 谷城县| 南投市| 修水县| 洛南县| 抚顺县| 新建县| 习水县| 漾濞| 苏州市| 长岛县| 禹州市| 资阳市| 密云县| 保德县| 磐石市| 洪雅县| 壤塘县| 新化县| 上栗县| 连云港市| 潍坊市| 镶黄旗| 晋州市| 阳新县| 永和县| 通榆县| 镇远县|