oracle动态条件查询语句,教您Oracle动态查询语句的⽤法Oracle动态查询语句是⼀类特殊的查询语句,下⾯就为您详细介绍Oracle动态查询语句的语法,如果您对Oracle动态查询⽅⾯感兴趣的话,不妨⼀看。
1. 当使⽤EXECUTE IMMEDIATE语句处理单⾏查询时,需要使⽤INTO⼦句接受返回数据:
DECLARE
query_stat VARCHAR2(100):='SELECT * FROM emp'||'WHEREempno=:eno';
emp_record emp%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE query_stat INTO emp_record USING &eno;
dbms_output.put_line('姓名:'||ame||',岗位:'||emp_record.job);
END;
2. EXECUTE IMMEDIATE只能⽤于处理单⾏查询,为了动态处理SELECT语句所返回的多⾏数据,需要
定义游标变量,并使⽤OPEN-FOR, FETCH, CLOSE语句共同完成。具体步骤如下:
#1 定义游标变量:因为动态处理多⾏查询需要使⽤游标变量完成,所以需要在定义部分定义游标变量,语法如下:
TYPE cursortype IS REF CURSOR;
cursor_variable cursortype;
#2 打开游标变量:打开游标变量会执⾏游标变量所对应的动态SELECT语句,并将查询结果存放到游标结果集。语法如下:
OPEN cursor_variable FOR dynamic_string
[USING bind_argument];
#3 提取数据:提取数据⽤于将结果集中的⾏数据存放到PL/SQL变量,语法如下:
FETCH cursor_variable INTO {VAR1};
#4 关闭游标变量:关闭游标变量⽤于释放游标结果集,语法如下:
CLOSE cursor_variable;
实例如下:
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('雇员名:'||ame||',⼯资:'||emp_record.sal); END LOOP;
CLOSE emp_cv;
END;
以上就是Oracle动态查询语句的⽤法介绍。
【编辑推荐】
oracle游标的使用
【责任编辑:段燃 TEL:(010)68476606】
点赞 0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。