PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-建立游標變數

LuiseDalian發表於2014-03-16

建立游標變數

n  定義REF CURSOR型別,然後宣告該變數的變數

n  宣告SYS_REFCURSOR的變數

游標變數通常被稱為引用游標

TYPE type_name IS REF CURSOR [ RETURN return_type ]

如果指定了return_type,則定義的引用游標變數和宣告的該型別的變數就是強型別的,否則是弱型別的。SYS_REFCURSOR型別和它的變數是弱型別的。

對於強型別的游標變數,只可以把返回指定型別的查詢和它相關聯;

對於弱型別的游標變數,可以與任何查詢關聯。

 

弱型別的游標變數比強型別的游標變數更容易產生錯誤,但它更靈活。弱型別的引用游標可以互相轉換,也可以與SYS_REFCURSOR互相轉換。

可以將一個弱型別的游標變數賦值給另一個弱型別的游標變數;只有當2個強型別游標變數具有相同的型別(不僅僅是返回型別相同),才可以進行賦值。

 

注意:對於只包含了partition by any子句的表函式游標變數引數(沒有包含範圍或雜湊分割槽), 你可以分割槽該弱游標變數引數(problem

DECLARE

    TYPE empcurtyp IS REF CURSOR RETURN employees%ROWTYPE;  -- 強型別

    TYPE genericcurtyp IS REF CURSOR;                       -- 弱型別

 

    cursor1  empcurtyp;       -- 強型別游標變數

    cursor2  genericcurtyp;   -- 弱型別游標變數

    my_cursor SYS_REFCURSOR;  -- 弱型別游標變數

 

    TYPE deptcurtyp IS REF CURSOR RETURN departments%ROWTYPE;  -- 強型別

    dept_cv deptcurtyp;  -- 強型別游標變數

BEGIN

    NULL;

END;

 

DECLARE

    TYPE EmpRecTyp IS RECORD (

        employee_id NUMBER,

        last_name VARCHAR2(25),

        salary   NUMBER(8,2));

 

    --返回使用者自定義型別的游標變數

    TYPE EmpCurTyp IS REF CURSOR RETURN EmpRecTyp;

    emp_cv EmpCurTyp;

BEGIN

    NULL;

END;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1122767/,如需轉載,請註明出處,否則將追究法律責任。

相關文章