REF遊標

      顯式遊標是靜態遊標也就是說遊標與一條SQL語句關聯在編譯塊時此語句是已知的

      在運行時遊標變量也可以與不同的語句關聯。遊標變量類似於PL/SQL變量,可以在運行時接納不同的值。靜態遊標類似於PL/SQL常量,因爲它們只能與一個運行時查詢關聯。

       遊標是一種引用類型,引用類型與指針相同,它可以在程序運行時指定不同的存儲位置。爲了使用引用類型,必須聲明變量,然後必須分配存儲空間。

      引用類型聲明語法如下:

            REF_var     type

其中type是事先定好的類型,ref關鍵字指示新類型是指:指向已定義類型的指針,因此,遊標的類型是REF遊標。定義遊標變量類型的完整語法如下:

         Type  type_name    is  ref    cursor    return     return_type;

  其中type_name是新引用類型的名稱返回類型是指示將由遊標變量返回的select列表的類型的記錄類型。遊標變量的返回類型必須是記錄類型可以將它顯式聲明爲用戶定義的記錄,也可以使用%ROWTYPE隱式聲明它。在定義引用類型之後,可以聲明變量。

具有約束的遊標變量和無約束的遊標變量

當遊標變量具有返回類型時它稱爲具有約束的遊標變量或強遊標。但是遊標變量不一定需要具有返回類型這樣的遊標變量稱爲無約束的遊標變量或弱遊標。強遊標和弱遊標的聲明的示例如下:

--強遊標類型

Type t_add_ref is ref cursor returnvendor_master%rowtype;

--弱遊標類型

Type t_adds_ref is ref cursor;

--聲明遊標變量

     V_add_ref   t_add_ref;  --強遊標變量 或具有約束變量

    V_adds_ref t_adds_ref;  --弱遊標變量或無約束變量

打開遊標變量進行查詢:

   遊標變量必須與特定的select語句關聯。這是由open語句實現的,該語句已擴展爲允許指定查詢。使用open語句的語法如下。

Open cursor_variable for select_statement;

其中cursor_variable是以前聲明的遊標變量,select_statement是所需的查詢。如果遊標變量是具有約束的,select列表必須與遊標的返回類型匹配

關閉遊標變量

     與靜態遊標一樣遊標變量是使用close語句關閉的。這將釋放用於查詢的資源。但是,它不一定釋放遊標變量本身的存儲空間。在變量超出其作用域時,將釋放變量的存儲空間。關閉已經關閉的遊標或遊標變量是非法的。

--此實例根據用戶選擇的動態遊標打開兩個不同的sql其中一個

  



  











  








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章