14动态游标
2017-09-11 17:23
309 查看
/* 动态游标是用于执行动态SQL语句。 */ declare --oracle9i之前的定义 Type REFCURSOR is REF CURSOR; cs_user REFCURSOR; --oracle9i之后的定义 --cs_user sys_refcursor; v_sql varchar2(1000); v_username varchar2(100); v_password varchar2(100); v_row T_Userinfo%RowType; v_dept T_Sys_Dept%RowType; begin --SQL语句的拼凑 v_username := 'a'; v_password := null; v_sql := 'Select * From T_Userinfo where 1 = 1'; if v_username is not null and v_username != ' ' then v_sql := v_sql || ' and username like ''%' || v_username || '%'' '; end if; if v_password is not null and v_password != ' ' then v_sql := v_sql || ' and password = '''; v_sql := v_sql || v_password; v_sql := v_sql || ''''; end if; v_sql := v_sql || ' order by userid asc'; dbms_output.put_line(v_sql); --使用动态游标来打开动态SQL. open cs_user for v_sql; loop fetch cs_user into v_row; if cs_user%notfound then exit; end if; dbms_output.put_line(v_row.userid || ' ' || v_row.username); end loop; close cs_user; dbms_output.put_line('读取另外一张表的数据'); v_sql := 'Select * From T_Sys_Dept order by dept_id asc'; open cs_user for v_sql; loop fetch cs_user into v_dept; if cs_user%notfound then exit; end if; dbms_output.put_line(v_dept.dept_id || ' ' || v_dept.dept_name); end loop; close cs_user; end; --Select * From T_Userinfo where 1 = 1 order by userid asc
相关文章推荐
- oracle动态游标实例
- 黑马程序员_学习日记51_621数据库开发及ADO.Net(游标、动态sql)
- 动态规划14之1019
- 动态游标
- Mysql 动态嵌套游标
- SQLSREVER如何创建和使用动态游标
- 在PL/SQL中使用游标、动态sql和绑定变量的小例子
- pb里的动态游标(字符串作为sql)
- 示例16 程序包中的动态游标
- 【oracle资料整理】--【14】游标
- SQLSREVER如何创建和使用动态游标
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常
- SQL语句查询结果集中的动态修改案例(临时表+游标)
- 14.数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==) oracle:视图,索引,存储过程,触发器,游标,包,常用函数
- pl/sql表+记录习题2+动态游标
- Oracle数据库动态SQL生成游标
- MySQL 中 动态sql,游标
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常【转载】
- 认识静态与动态游标