CREATE OR REPLACE PACKAGE '' AS type cur is ref cursor
整體的意思是“創建一個類型變量cur,它引用遊標”,除了cur外,其餘全是關鍵字。 TYPE cur:定義類型變量 is ref cursor:相當於數據類型,不過是引用遊標的數據類型。 這種變量通常用於存儲過程和函數返回結果集時使用,因爲PL/SQL不允許存儲過程或函數直接返回結果集,但可以返回類型變量,於是引用遊標的類型變量作爲輸出參數或返回值就應運而生了。
%ROWTYPE:表示該類型爲行數據類型,存儲的時候爲一行數據,一行有很多列,相當於表中的一行數據,也可以的遊標中的一行數據。
用到%ROWTYPE作用是:當查詢整行的時候(SELECT * FROM EMP;),那麼效率比每一個字段對應快。
例如: v_info emp%ROWTYPE; //該類型爲emp表中的一行數據類型
v_cinfo c_emp%ROWTYPE //該類型爲遊標c_emp中的一行數據類型
Ref cursor屬於動態cursor(直到運行時才知道這條查詢)。從技術上講,在最基本的層次靜態cursor和ref cursor是相同的。一個典型的PL/SQL光標按定義是靜態的。Ref光標正好相反,可以動態地打開,或者利用一組SQL靜態語句來打開,選擇哪種方法由邏輯確定(一個IF/THEN/ELSE代碼塊將打開一個或其它的查詢)。