依据:
1.使用EXECUTE IMMEDIATE可以来执行动态SQL
2.open cursor可以打开一个sql的查询,fetch cursor可以挨个获取查询记录
示例
1.使用EXECUTE IMMEDIATE查询一张数据表的记录数
- DECLARE
- get_count_sql varchar2(100);
- row_count INT;
- BEGIN
- get_count_sql:='select count(*) from bizbusinessbaseinfo';
- EXECUTE IMMEDIATE get_count_sql INTO row_count;
- dbms_output.put_line(row_count);
- END;
2.使用EXECUTE IMMEDIATE执行动态删除语句
- DECLARE
- delete_sql varchar2(100);
- BEGIN
- delete_sql:='delete from bizbusinessbaseinfo where bizname=''1''';
- execute immediate delete_sql;
- END;
3.执行动态DDL语句
- DECLARE
- drop_sql varchar2(100);
- BEGIN
- drop_sql:='DROP TABLE logrec_action';
- execute immediate drop_sql;
- END;
4.使用open cursor进行简单的动态查询
- DECLARE
- query_sql varchar2(100);
- queryresult varchar2(50);
- bizcursor SYS_REFCURSOR;
- BEGIN
- query_sql:='select bizname from bizbusinessbaseinfo';
- OPEN bizcursor FOR query_sql;
- loop
- fetch bizcursor into queryresult;
- --判读是否提取到值,没取到值就退出
- --取到值c_job%notfound 是false
- --取不到值c_job%notfound 是true
- exit when bizcursor%notfound;
- dbms_output.put_line(queryresult);
- end loop;
- --关闭游标
- close bizcursor;
- END;
5.动态查询出多个字段(需要先定义好输出结果的类型,不方便用在动态查询中)
- DECLARE
- query_sql varchar2(100);
- queryresult varchar2(50);
- bizcursor SYS_REFCURSOR;
- type my_record is record(
- bizname varchar2(64),
- bizstatus char(1));
- my_rec my_record;
- BEGIN
- query_sql:='select bizname,bizstatus from bizbusinessbaseinfo';
- OPEN bizcursor FOR query_sql;
- loop
- fetch bizcursor into my_rec;
- --判读是否提取到值,没取到值就退出
- --取到值c_job%notfound 是false
- --取不到值c_job%notfound 是true
- exit when bizcursor%notfound;
- dbms_output.put_line(my_rec.bizname|| ' ' ||my_rec.bizstatus);
- end loop;
- --关闭游标
- close bizcursor;
- END;
查询count
--查询理赔次数
get_count_sql:= 'select count(case g.status when ''A'' then ''A'' end ) as countA , count(case g.status when ''P'' then ''P'' end ) as countP from gcAdjustmentPersonFee g ,GcAdjustmentPerson p where g.lossNo=p.lossno and g.lossseqno=p.lossseqno and g.paidserialno=p.paidserialno and g.policyno='''||rec_selectInfoArgs.Policyno||''' and g.clientcode='''||rec_selectInfoArgs.Clientcode||''' and g.liabcode in (select * from table(str_split('''||rec_selectInfoArgs.Liabcode||''','',''))) and g.kindcode='''||rec_selectInfoArgs.Kindcode ||''''|| n_sql; EXECUTE IMMEDIATE get_count_sql INTO n_countA,n_countP; n_remainlimit:= rec_findGcPolicyLimitTemp.Shortlimit-n_countA; n_predictlimit:= rec_findGcPolicyLimitTemp.Shortlimit-n_countA-n_countP;
--查询多次条记录
--记录表into类型
bizcursor SYS_REFCURSOR; type my_record is record( n_lossno gcpolicypaidhistorytemp.lossno%type, n_lossseqno gcpolicypaidhistorytemp.lossseqno%type, n_upload gcpolicypaidhistorytemp.upload%type); my_rec my_record; n_historyId gcpolicypaidhistorytemp.historyid%type:=1; get_detail_sql:='select g.lossNo,g.lossSeqNo,m.dataUploadFlag from gcAdjustmentPersonFee g ,GcAdjustmentPerson p,gcAdjustmentMain m where g.lossNo=p.lossno and g.lossseqno=p.lossseqno and g.paidserialno=p.paidserialno and p.lossno=m.lossno and g.lossseqno=m.lossseqno and g.policyno='''||rec_selectInfoArgs.Policyno||''' and g.clientcode='''||rec_selectInfoArgs.Clientcode||''' and g.liabcode in (select * from table(str_split('''||rec_selectInfoArgs.Liabcode||''','',''))) and g.kindcode='''||rec_selectInfoArgs.Kindcode ||''''|| n_sql; OPEN bizcursor FOR get_detail_sql; loop fetch bizcursor into my_rec; EXIT WHEN bizcursor%NOTFOUND; insert into gcpolicypaidhistorytemp (historyId,limitId,policyno,endorseqno,endorno,lossNo,lossSeqNo,upload) values (n_historyId,rec_findGcPolicyLimitTemp.Limitid,rec_findGcPolicyLimitTemp.Policyno,rec_findGcPolicyLimitTemp.Endorseqno,rec_findGcPolicyLimitTemp.Endorno, my_rec.n_lossno, my_rec.n_lossseqno, my_rec.n_upload); n_historyId:=n_historyId+1; end loop; --关闭游标 close bizcursor;
相关推荐
pl/sql例题代码pl/sql例题代码pl/sql例题代码
pl/sql developer11.0下载 pl/sql developer11.0下载 pl/sql developer11.0下载
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序,...
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...
PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...
PL/SQL developer 12.07 注册码 可以使用,不错,自己用过了,分享给大家
最新pl/sql7.0中文手册
pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl...
一个对数据库的操作工具PL/SQL,能够对ORACLE\SQL进行很好的帮助操作!
PL/SQL Developer 8.0.3 1510 含注册机 PL/SQL Developer is an Integrated Development Environment that is specifically targeted at the development of stored program units for Oracle Databases. Over ...
oracle10g pl/sql完备教程,供初学者学习与开发者参考
1、PL/SQL简介 2、PL/SQL基础 3、记录和表 4、在PL/SQL中使用SQL 5、内置SQL函数 6、游标 7、过程和函数 ...
很多时候你是不是为了32为的plsql的各种复杂配置烦恼,不要紧,现在下载64位的pl/sql,不需要繁琐的配置,让你更轻松
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...
PL/SQL 程序设计 本章主要重点: PL/SQL概述 PL/SQL块结构 PL/SQL流程 运算符和表达式 游标 异常处理 数据库存储过程和函数 包 触发器
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...
第16章 动态SQL和动态PL/SQL 492 目 录(下册) 第5部分 构造PL/SQL应用程序 第17章 过程、函数与参数 543 第18章 包 593 第19章 触发器 626 第20章 管理PL/SQL代码 685 第21章 PL/SQL的性能优化 753 第22章 I/O操作和...
用PL/SQL 是 Oracle公司在标准 SQL 语言上进行一定的扩展而形成的一种数据库语言。它寄托于传统的 SQL 语句,同时又在功能上做了不少的扩充。PL/SQL 有着太多的优势,甚至让SQL 在它面前也黯然失色。 PL/SQL ...
PL/SQL Developer是Oracle数据库当前最流行的开发工具之一,它在ORACLE数据库开发设计方面功能强大,使用方便,但是数据库管理方面一直比较欠缺。 DBATools For PL/SQL Developer 是一款PL/SQL Developer的辅助插件...