Oracle_PL/SQL(7) 集合】的更多相关文章

pl/sql集合处理单行单列数据,可以使用标量变量:处理单行多列的数据,可以使用pl/sql记录(%rowtype,record):处理单列多行数据,可以使用pl/sql集合. pl/sql集合类型是类似于高级语言数组的一种复合数据类型.包括:嵌套表(table),数组(varray)两种. 一.嵌套表1.定义:嵌套表用于处理相同类型的多个数值,其中每个数值称为一个元素.元素的个数从1开始,元素个数的多少没有限制1.2 语法: type type_name is table of element…
写在前面 集合论是SQL语言的根基,因为这种特性,SQL也被称为面向集合语言 导入篇:集合运算的几个注意事项 注意事项1:SQL能操作具有重复行的集合(multiset.bag),可以通过可选项ALL来支持 SQL的集合运算符提供了允许重复和不允许重复两种用法,UNION和INTERSECT结果里不会出现重复的行,UNION ALL则会保留重复行:ALL的作用和SELECT子句中的DISTINCT相反.ALL有助于优化查询性能,这是因为使用ALL后不再进行排序 注意事项2:集合运算符存在优先级…
最近学习了SQL SERVER方面的知识,毕竟做Web应用,少不了跟数据库打交道.学习的来源主要是<程序员的SQL金典>这本书. 今天介绍数据库里面的集合运算符,它是指匹配集合的每一个结果.数据库集合运算符包括:IN.ANY.SOME.ALL.EISTS及EXCEPT和INTERSECT等. IN运算符 它可以用来匹配一个固定集合中的某一项.比如说一个集合里面的年份有(2001,2003,2005),那么就可以有: SELECT * FROM T_Book ,,) IN运算符,除了支持从固定的…
原文转自:http://blog.csdn.net/qsyzb/article/details/12560917 SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. 集合操作主要包括并操作UNION.交操作INTERSECT.差操作EXCEPT. 注意,参加集合操作的各查询结果的列数必须相同:对应的数据类型也必须相同. 本示例中的数据表有student,sc,course三个,数据表的具体内容请看:Mysql数据库中的EXISTS和NOT EXISTS UNI…
在PL/SQL代码块中使用select into 赋值的话,有可能返回的是一个结果集.此时,如果使用基本类型或自定义的记录类型,将会报错. 因此,需要定义一个变量,是某种类型的集合.下面以一个基于表的行类型的集合为例简单介绍一下(相信基本类型同理吧). DECLARE CURSOR cur_tx IS SELECT GKEY from t ; SUBTYPE TX_TYPE IS t%ROWTYPE ; -- 定义类型 TYPE TX_TAB IS TABLE OF TX_TYPE;--定义新类…
例外处理1.例外分类:预定义例外,非预定义例外,自定义例外三种传递例外:如果在例外处理部分exception没有捕捉例外,oracle会将例外传递到调用环境.捕捉并处理例外:使用例外处理部分完成exceptionwhen exception1 thenstatement1;when exception2 thenstatement2;...when others then --必须是例外处理部分的最后一条子句statement_n;... 2.预定义例外2.1系统预定义例外有21个,如下:dup…
动态sql0.pl/sql块的限制 不能执行ddl操作(create.drop.alter): 不能执行部分dcl操作(grant.revoke). 1.语法动态sql:在执行时才能确定要执行的sql语句.在pl/sql块中编写动态sql语句时,需要将sql语句存放到字符串变量中,而且sql可以包含占位符.execute immediate dynamic_stringdynamic_string :是存放要被执行的sql语句的字符串变量. 2.用途可处理: ddl语句(create,alter…
序列1.创建序列create sequence seq_alog start with 1 increment by 1 maxvalue 999999999999999999999999999 minvalue 1 cache 20;说明:start with 1 --表示序列从1开始increment by 1 --表示序列每次自增1maxvalue --序列的最大值minvalue --序列的最小值cache 20 --缓存区大小 2.nextval和currval属性 select se…
有的时候需要在不同的数据库实例之间做集合操作,这就无法直接使用SQL语句的join,left join了.相同类型的数据库之间虽然也有类似于DBLINK和FEDERATED之类的东西,但一来这些东西不同的数据库之间是不能通用的,还有就是这些都要在数据库服务端上操作的,即使是dba要走这么一个申请流程也是非常麻烦的.所以就想自己写几个常用的: inner_join:内连接操作,t1 join t2 on t1.col=t2.col,返回连接字段相等的行,方式包括下面的外连接用的都是最简单的nest…
创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database databaseName go Create DATABASE databasename on primary-- 默认就属于primary文件组,可省略 ( /*--数据文件的具体描述--*/ name=‘databasename_data’,-- 主数据文件的逻辑名称 filename=‘'所存…