教您Oracle動態(tài)查詢語句的用法
Oracle動態(tài)查詢語句是一類特殊的查詢語句,下面就為您詳細(xì)介紹Oracle動態(tài)查詢語句的語法,如果您對Oracle動態(tài)查詢方面感興趣的話,不妨一看。
1. 當(dāng)使用EXECUTE IMMEDIATE語句處理單行查詢時,需要使用INTO子句接受返回?cái)?shù)據(jù):
- DECLARE
- query_stat VARCHAR2(100):='SELECT * FROM emp'||'WHERE empno=:eno';
- emp_record emp%ROWTYPE;
- BEGIN
- EXECUTE IMMEDIATE query_stat INTO emp_record USING &eno;
- dbms_output.put_line('姓名:'||emp_record.ename||',崗位:'||emp_record.job);
- END;
2. EXECUTE IMMEDIATE只能用于處理單行查詢,為了動態(tài)處理SELECT語句所返回的多行數(shù)據(jù),需要定義游標(biāo)變量,并使用OPEN-FOR, FETCH, CLOSE語句共同完成。具體步驟如下:
#1 定義游標(biāo)變量:因?yàn)閯討B(tài)處理多行查詢需要使用游標(biāo)變量完成,所以需要在定義部分定義游標(biāo)變量,語法如下:
- TYPE cursortype IS REF CURSOR;
- cursor_variable cursortype;
#2 打開游標(biāo)變量:打開游標(biāo)變量會執(zhí)行游標(biāo)變量所對應(yīng)的動態(tài)SELECT語句,并將查詢結(jié)果存放到游標(biāo)結(jié)果集。語法如下:
- OPEN cursor_variable FOR dynamic_string
- [USING bind_argument];
#3 提取數(shù)據(jù):提取數(shù)據(jù)用于將結(jié)果集中的行數(shù)據(jù)存放到PL/SQL變量,語法如下:
- FETCH cursor_variable INTO {VAR1};
#4 關(guān)閉游標(biāo)變量:關(guān)閉游標(biāo)變量用于釋放游標(biāo)結(jié)果集,語法如下:
- CLOSE cursor_variable;
實(shí)例如下:
- DECLARE
- TYPE empcurtyp IS REF CURSOR;
- emp_cv empcurtyp;
- emp_record emp%ROWTYPE;
- sql_stat VARCHAR2(100);
- BEGIN
- sql_stat :='SELECT * FROM emp WHERE deptno=:dno';
- OPEN emp_cv FOR sql_stat USING &dno;
- LOOP
- FETCH emp_cv INTO emp_record;
- EXIT WHEN emp_cv%NOTFOUND;
- dbms_output.put_line('雇員名:'||emp_record.ename||',工資:'||emp_record.sal);
- END LOOP;
- CLOSE emp_cv;
- END;
以上就是Oracle動態(tài)查詢語句的用法介紹。
【編輯推薦】