- 浏览: 336351 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
hufangxian:
估计面试官都被你的回答搞晕了。
抽象类和接口的理解 -
alvin198761:
需要了解多态和设计模式,了解一些框架的原理,你就知道这东东真正 ...
抽象类和接口的理解 -
sangei:
谢谢楼上提醒,希望慢慢能有所进步。
抽象类和接口的理解 -
jackra:
书背的不错可以看看设计模式如何使用抽象类
抽象类和接口的理解 -
ptsd:
lag(column_x,number1,XX)用来返回当前数 ...
【转】oracle的LAG和LEAD分析函数
SQL> set serveroutput on SQL> declare 2 type tnt_ic01 is table of ic01%rowtype; 3 nt_ic01 tnt_ic01 := tnt_ic01(); 4 n_startTime number; 5 begin 6 n_startTime := dbms_utility.get_time; 7 for rec_ic01 in( select * from ic01 where rownum < 100000 ) loop 8 nt_ic01.extend; 9 nt_ic01( nt_ic01.last ) := rec_ic01; 10 end loop; 11 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 12 dbms_output.put_line( 'USED TIEM: ' || ( dbms_utility.get_time - n_startTime ) ); 13 end; 14 / COUNT: 99999 USED TIEM: 255
PL/SQL 过程已成功完成。 |
SQL> declare 2 type tnt_ic01 is table of ic01%rowtype; 3 nt_ic01 tnt_ic01; 4 n_startTime number; 5 begin 6 n_startTime := dbms_utility.get_time; 7 select * 8 bulk collect into nt_ic01 9 from ic01 10 where rownum < 100000; 11 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 12 dbms_output.put_line( 'USED TIEM: ' || ( dbms_utility.get_time - n_startTime ) ); 13 end; 14 / COUNT: 99999 USED TIEM: 159
PL/SQL 过程已成功完成。 |
SQL> declare 2 type tnt_ic01 is table of ic01%rowtype; 3 nt_ic01 tnt_ic01; 4 rec_ic01 ic01%rowtype; 5 begin 6 --1. normal select, can cause no_data_found 7 begin 8 select * 9 into rec_ic01 10 from ic01 11 where 1 = 0; 12 exception 13 when no_data_found then 14 dbms_output.put_line( 'error1: no_data_found exception accured!' ); 15 end; 16 17 --2. bulk collect, won't cause no_data_found 18 select * 19 bulk collect into nt_ic01 20 from ic01 21 where 1 = 0; 22 if nt_ic01.count = 0 then 23 dbms_output.put_line( 'error2: There is no data in nt_ic01.' ); 24 end if; 25 end; 26 / error1: no_data_found exception accured! error2: There is no data in nt_ic01.
PL/SQL 过程已成功完成。 |
-- 1. fetch collect into SQL> declare 2 cursor cur_ic01 is 3 select * 4 from ic01 5 where rownum < 10; 6 7 type tnt_ic01 is table of cur_ic01%rowtype; 8 nt_ic01 tnt_ic01; 9 begin 10 open cur_ic01; 11 fetch cur_ic01 bulk collect into nt_ic01; 12 close cur_ic01; 13 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 14 end; 15 / COUNT: 9
PL/SQL 过程已成功完成。
-- 2. returning into SQL> select * from test_return;
AAC001 AAC003
SQL> declare
PL/SQL 过程已成功完成。
SQL> select * from test_return; AAC001 AAC003 SQL> |
SQL> declare 2 cursor cur_ic01 is 3 select * 4 from ic01 5 where rownum < 10; 6 7 type tnt_ic01 is table of cur_ic01%rowtype index by pls_integer; 8 nt_ic01 tnt_ic01; 9 begin 10 open cur_ic01; 11 fetch cur_ic01 bulk collect into nt_ic01; 12 close cur_ic01; 13 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 14 end; 15 / COUNT: 9
PL/SQL 过程已成功完成。 |
BULK COLLECT 生成的集合,下表是默认从1开始的数字,步进为1,所以联合数组的索引,不能使用 varchar2 类型。如果你不小心使用了 varchar2 类型作为联合数组的索引,就会出现下面的错误:
SQL> select * from v$version; BANNER SQL> declare 2 type tnt_ic01 is table of ic01%rowtype; 3 nt_ic01 tnt_ic01; 4 5 v_sql_cursor varchar2(1000); 6 begin 7 v_sql_cursor := 'select * from ic01 where rownum < 100000'; 8 execute immediate v_sql_cursor bulk collect into nt_ic01; 9 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 10 end; 11 / COUNT: 99999
PL/SQL 过程已成功完成。
SQL> |
ERROR 位于第 11 行: ORA-06550: 第 11 行, 第 36 列: PLS-00657: 实施约束: 不支持带有 VARCHAR2 关键字的关联性数组的批 SQL。 |
5. VARRAY 数组中使用 BULK COLLECT
而对于 VARRAY 数组,BULK COLLECT 也适用,不过定义时,其长度必须得大于或等于结果集的长度:
SQL> declare 2 cursor cur_ic01 is 3 select * 4 from ic01 5 where rownum < 10; 6 7 type tnt_ic01 is varray(9) of ic01%rowtype; 8 nt_ic01 tnt_ic01; 9 begin 10 open cur_ic01; 11 fetch cur_ic01 bulk collect into nt_ic01; 12 close cur_ic01; 13 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 14 end; 15 / COUNT: 9 PL/SQL 过程已成功完成。 如果 VARRAY 数组长度定义得过小,则会提示错误: SQL> declare 2 cursor cur_ic01 is 3 select * 4 from ic01 5 where rownum < 10; 6 7 type tnt_ic01 is varray(8) of ic01%rowtype; 8 nt_ic01 tnt_ic01; 9 begin 10 open cur_ic01; 11 fetch cur_ic01 bulk collect into nt_ic01; 12 close cur_ic01; 13 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 14 end; 15 / declare * ERROR 位于第 1 行: ORA-22165: 指定的索引 [9] 必须介于 [1] 到 [8] 之间 ORA-06512: 在 line 11 如果 VARRAY 数组长度定义得过大,没什么影响,而且也不会占用多余的内存空间: SQL> declare 2 cursor cur_ic01 is 3 select * 4 from ic01 5 where rownum < 10; 6 7 type tnt_ic01 is varray(10) of ic01%rowtype; 8 nt_ic01 tnt_ic01; 9 begin 10 open cur_ic01; 11 fetch cur_ic01 bulk collect into nt_ic01; 12 close cur_ic01; 13 dbms_output.put_line( 'COUNT: ' || nt_ic01.count ); 14 dbms_output.put_line( 'LIMIT: ' || nt_ic01.limit ); 15 end; 16 / COUNT: 9 LIMIT: 10 PL/SQL 过程已成功完成。 不过推荐首选联合数组,或是嵌套表,在这里虽然可以使用 VARRAY 数组,但显然是不太合适的,就像steven 所介绍的那样。 6. 动态 SQL 中使用 BULK COLLECT
发表评论
-
SQL中on条件与where条件的区别
2016-02-17 10:26 732/* 标题:SQL中 -
mysql update注意
2016-01-18 16:16 601drop table a; CREATE TABLE IF ... -
Oracle中JOB的创建方法以及一个细节的探究(转)
2012-10-15 16:35 1266在Oracle中可以使用JOB来实现一些任务的自动化执行,类似 ... -
oracle里的job和schedule有什么区别(转)
2012-10-15 16:31 1301210g 中新推出的SCHEDULER可能确实会让很多初接触的朋 ... -
procedure的加密
2012-08-06 14:34 774wrap iname=eptapi.pac oname=ept ... -
sql plus中执行pl/sql
2012-03-23 00:18 0declare v_string varc ... -
(转)oracle 带输出参数存储过程
2012-03-23 00:13 0执行带输出参数的存储过程 SQL> var c v ... -
(转)Oracle:Authid Current_User的使用
2012-03-22 23:53 0我们知道,用户拥有的role权限在存储过程是不可用的。遇 ... -
在pl/sql里select dba_jobs为什么不成功
2012-03-22 23:52 0PROCEDURE TEST1 ( PROCEDR ... -
(转)Oracle 中的exception——(Raise)
2012-03-22 23:30 15591.GOTO,主要用于跳转,但会打乱我们的程序逻辑,一般不使用 ... -
(转)PL/SQL --> 动态SQL的常见错误
2012-03-22 18:31 1453--============================ ... -
Oracle SELECT with an array using an IN
2012-01-18 17:03 1331Oracle SELECT with an ... -
pl/sql 实现类似于split 的分割字符串的功能
2012-01-12 23:55 61561、先建立一个包,定义数组类型:CREATE OR REP ... -
c#向pl/sql传递数组参数
2012-01-12 23:48 39211.OracleParameterpout1=OracleDb ... -
execute immediate
2012-01-12 21:41 1240EXECUTE IMMEDIATE Statement ... -
【实验】【PROCEDURE】一个最简单的oracle存储过程"proc_helloworld"
2011-08-08 09:51 1250本文通过一个最简单的oracle存储过程"proc_ ... -
创建oracle job
2011-07-27 17:20 895oracle job简介 主要的使用情景 定时在后台执行 ...
相关推荐
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
基于java的学生网上请假系统的开题报告.docx
社会经济繁荣发展的今天,电子商务得到了飞速发展,网上交易越来越彰显出其独特的优越性,在人们的日常生活中,出现了各种类型的交易网站。其中一个就是车辆易主交易网站,它是一个服务于用户买卖二手车辆的交易网站,为用户提供了平等互利、方便快捷的网上交易平台,通过这一类型的网站,用户可自由出售和购买车辆。 本课题主要根据车辆本身的特性,充分发挥互联网的特点与优势,构建一个以二手车辆为商品、基于互联网平台的车辆易主业务交易管理系统,并根据车辆易主业务交易管理系统的应用需求,进行需求分析,进而对网站系统作规划设计。采用IDEA为运行平台,以SSH为框架,运用HTML语言、JSP技术、MySql数据库、JSP与后台数据库链接等关键技术建设二手车网上交易系统,构建车辆易主交易系统的会员注册与登录,网站首页展示、用户发布商品车辆,用户求购商品车辆,分页浏览、购物系统、用户后台管理、管理员用户后台管理等功能,并使这些功能得以实现并更好为用户服务。网站整体构建完成且测试成功后,用户可以进入网站进行注册、登录,登录后,用户可以在网站上发布自己的闲置车辆或者寻找想要购买的车辆,还可以收藏车辆,管理发布和收藏的车辆,
SQLite3的向量扩展库,windows dll,版本0.1.5
基于C++实现(控制台)商品库存管理系统