程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 教您Oracle動態查詢語句的用法

教您Oracle動態查詢語句的用法

編輯:Oracle數據庫基礎

Oracle動態查詢語句是一類特殊的查詢語句,下面就為您詳細介紹Oracle動態查詢語句的語法,如果您對Oracle動態查詢方面感興趣的話,不妨一看。

1. 當使用EXECUTE IMMEDIATE語句處理單行查詢時,需要使用INTO子句接受返回數據:

  1. DECLARE  
  2.  
  3. query_stat VARCHAR2(100):='SELECT * FROM emp'||'WHERE empno=:eno';  
  4.  
  5. emp_record emp%ROWTYPE;  
  6.  
  7. BEGIN  
  8.  
  9. EXECUTE IMMEDIATE query_stat INTO emp_record USING &eno;  
  10.  
  11. dbms_output.put_line('姓名:'||emp_record.ename||',崗位:'||emp_record.job);  
  12.  
  13. END;  
  14.  

2. EXECUTE IMMEDIATE只能用於處理單行查詢,為了動態處理SELECT語句所返回的多行數據,需要定義游標變量,並使用OPEN-FOR, FETCH, CLOSE語句共同完成。具體步驟如下:

#1 定義游標變量:因為動態處理多行查詢需要使用游標變量完成,所以需要在定義部分定義游標變量,語法如下:

  1. TYPE cursortype IS REF CURSOR;  
  2.  
  3.                 cursor_variable cursortype;  

#2 打開游標變量:打開游標變量會執行游標變量所對應的動態SELECT語句,並將查詢結果存放到游標結果集。語法如下:

  1. OPEN cursor_variable FOR dynamic_string  
  2.  
  3.                              [USING bind_argument];  

#3 提取數據:提取數據用於將結果集中的行數據存放到PL/SQL變量,語法如下:                     

  1. FETCH cursor_variable INTO {VAR1}; 

#4 關閉游標變量:關閉游標變量用於釋放游標結果集,語法如下:

  1. CLOSE cursor_variable; 

實例如下:

  1. DECLARE  
  2.  
  3.     TYPE empcurtyp IS REF CURSOR;  
  4.  
  5.     emp_cv empcurtyp;  
  6.  
  7.     emp_record emp%ROWTYPE;  
  8.  
  9.     sql_stat VARCHAR2(100);  
  10.  
  11. BEGIN  
  12.  
  13.      sql_stat :='SELECT * FROM emp WHERE deptno=:dno';  
  14.  
  15.      OPEN emp_cv FOR sql_stat USING &dno;  
  16.  
  17.      LOOP  
  18.  
  19.         FETCH emp_cv INTO emp_record;  
  20.  
  21.         EXIT WHEN emp_cv%NOTFOUND;  
  22.  
  23.         dbms_output.put_line('雇員名:'||emp_record.ename||',工資:'||emp_record.sal);  
  24.  
  25.      END LOOP;  
  26.  
  27.      CLOSE emp_cv;  
  28.  
  29. END;  
  30.  

以上就是Oracle動態查詢語句的用法介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved