自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

實現Oracle游標的動態(tài)形式講解

數據庫 Oracle
以下的文章主要是對實現Oracle游標的動態(tài)形式的正確講解,我們以假設實例的方式來講述其實際的操作步驟,以下就是文章的具體操作內容。

在開發(fā)過程的中,我們經常要用到Oracle游標來進行相關的統(tǒng)計(不用臨時表)并且返回其統(tǒng)計結果,但是游標的后面SQL語句往往是動態(tài)的,例如select * from tablename where ?order ?."?"代表條件,這樣該如何處理呢?

在同事的幫助下我實踐了一下??偨Y出來。

假設tablename表中有field如下:

 

  1. field1 varchar2(50)   
  2. field2 Varchar2(50)   
  3. field3 Varchar(50)   
  4. field4 varchar2(50)   
  5. field5 varchar2(20)   
  6. field6 float,   
  7. field7 float   

 

1.定義游標

 

  1. create or replace package RefCursor is   
  2. -- Author : Ricky   
  3. -- Created 2003-9-1 14:08:45   
  4. -- Purpose :   
  5. -- Public type declarations   
  6. type t_RefCursor is ref cursor;   
  7. end RefCursor; 

2.創(chuàng)建類型

創(chuàng)建的類型與tablename中表的fields一致,當然也要看你實際是否要統(tǒng)計所有的fields.

 

  1. create or replace type TableType as object   
  2.  (   
  3. -- Author : Ricky   
  4. -- Created : 2003-8-25 9:12:08   
  5. -- Purpose :   
  6. -- Attributes   
  7. field1 varchar2(50),   
  8. field2 Varchar2(50),   
  9. field3 Varchar(50),   
  10. field4 varchar2(50),   
  11. field5 varchar2(20),   
  12. field6 float,   
  13. field7 float   
  14.  );  

3.創(chuàng)建表類型

 

  1. create or replace type TableTypeList as table of TableType;  

4.在存儲過程或者函數中使用,下面在函數中使用(存儲過程中不能用return一個表結構,要用到臨時表)

  1. CREATE OR REPLACE FUNCTION "TEST" (   
  2. return TableTypeList pipelined as   
  3. begin   
  4. v_Cur RefCursor.t_Refcursor;   
  5. v_SQLStatement string(10000);   
  6. v_Table tablename%rowtype;   
  7. tmp1 tablename.field1%Type;   
  8. tmp2 tablename.field2%Type;   
  9. tmp3 tablename.field3%Type;   
  10. tmp4 tablename.field4%Type;   
  11. tmp5 tablename.field5%Type;   
  12. tmp6 tablename.field6%Type;   
  13. tmp7 tablename.field6%Type;   
  14. v_SQLStatement := 'Select * From tablename where field1='1' order by field1';   
  15. open v_Cur for v_SQLStatement;   
  16. loop   

這里是循環(huán)過程
 

  1. fetch v_Cur into v_Comm;   
  2. exit when v_CommCur%notfound;  

這里是你要處理的統(tǒng)計過程,中間的過程我沒有做統(tǒng)計,各位在實踐中按需要自己添加。
 

  1. field1 = v_Cur.field1;   
  2. field2 = v_Cur.field2;   
  3. field3 = v_Cur.field3;   
  4. field4 = v_Cur.field4;   
  5. field5 = v_Cur.field5;   
  6. field6 = v_Cur.field6;   
  7. field7 = v_Cur.field7;   
  8. v_Table = TableType(field1,   
  9. field2,   
  10. field3,   
  11. field4,   
  12. field5,   
  13. field6,   
  14. field7)   
  15. pipe row(v_Table);   
  16. end loop   
  17. end;  

以上的相關內容就是對Oracle游標動態(tài)形式的實現的介紹,望你能有所收獲。

【編輯推薦】

  1. 對Oracle 11g中的XML正確理解
  2. win2000企業(yè)版下正確卸載Oracle 9i
  3. Oracle安全策略在MIS系統(tǒng)實例中的體現
  4. 安裝Oracle 10g 在redhat linux 的正確方案
  5. Oracle 10G數據庫中軟硬件環(huán)境有哪些要求?
責任編輯:佚名 來源: 賽迪網
相關推薦

2010-07-01 14:36:34

SQL Server動

2010-04-21 15:02:50

Oracle使用游標

2010-04-21 15:10:35

Oracle游標

2010-05-07 12:07:08

Oracle 多層游標

2010-09-01 15:09:41

DB2動態(tài)游標

2010-04-21 15:52:45

Oracle游標

2010-09-01 15:15:20

DB2動態(tài)游標

2011-07-29 10:36:43

游標Oracle數據庫

2010-05-26 16:41:09

MySQL 游標

2022-05-11 15:06:02

MySQL游標SQL

2010-09-08 09:11:42

SQL游標語法

2010-05-31 17:06:35

MySQL游標

2010-09-10 16:20:10

SQL函數

2010-08-05 14:24:37

DB2存儲過程

2010-11-16 15:40:21

oracle游標

2010-07-14 15:32:28

SQL Server

2010-11-16 15:11:52

Oracle隱式游標

2010-11-16 15:23:28

Oracle游標

2010-10-09 16:41:54

MYSQL存儲過程

2010-07-26 10:59:59

SQL Server游
點贊
收藏

51CTO技術棧公眾號