![](https://img-blog.csdnimg.cn/20190905123035594.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Oracle数据库
F元凯
无论走了多远,错了,就要重头来过!
展开
-
Oracle数据库(七):集合类型
集合是一种类似于列表或者一维数组的数据结构;一个集合是由若干个元素(一大堆数据)组成的,集合中的每个元素位于列表中的一个固定索引处。有时候,集合中的一个元素叫做一行,对应的索引就叫做行号。同质元素:集合中的每一个元素的数据类型都是相同的。集合类型关联数组:是一个只能在PL/SQL环境使用的,一维的、没有边界的、稀疏的、由同质元素构成的集合类型; 嵌套表:是一个一维的、没有边界的、由同...原创 2019-07-08 13:15:23 · 5369 阅读 · 0 评论 -
Oracle数据库(十八):触发器
DML触发器:当向一个特定的表插入、更新或者删除记录时可以触发DML触发器。可以在一个DML语句的执行之前或者之后触发;或者在语句每一行之前或者之后触发。可以有insert、update、merge或者delete语句触发,或者几种操作的组合。before触发器:在某个操作发生之前触发; after触发器:某个操作之后触发; 语句级别触发器:由整个SQL语句触发的; 行级别触发器:针对S...原创 2019-07-09 13:14:07 · 3155 阅读 · 0 评论 -
Oracle数据库(十九):视图
视图在数据库中可以理解为一张虚拟的表。它是一个基于一个表或多个表的逻辑表,视图本身不包含任何数据,只是一个查询语句的结果。语法:CREATE [ OR REPLACE ] [ [ NO ] FORCE ] VIEW[ schema.]viewName [ (alias,...) inline_constraint(s) ] [out_of_line_constrain(s)]AS s...原创 2019-07-09 13:22:33 · 3085 阅读 · 0 评论 -
Oracle数据库锁表解决方法
锁表问题今天执行一个删除语句的时候,一直执行不了,最后发现是因为之前对这个表使用了for update语句,然后又忘记提交了。解决方法执行下语句将查找到有哪些表被锁住了:select b.owner,b.object_name,a.session_id,a.locked_mode,c.sid,c.serial#,c.logon_time from v$locked_object ain...原创 2019-07-06 13:52:07 · 3920 阅读 · 0 评论 -
Oracle数据库:创建约束
约束主键约束外键约束CHECK约束UNIQUE约束:NOT NULL约束:主键约束在创建表的是时候添加主键约束:在创建表的最后添加:(当然,也可以不放在最后,放在定义类的后边,即not null 的后边)create table p_article ( id NVARCHAR2(32) default SYS_GUID() not nu...原创 2019-07-06 14:33:52 · 3496 阅读 · 0 评论 -
Oracle数据库(一):变量声明
目录变量声明的基本语法锚定声明自定义子类型变量声明的基本语法name [CONSTANT] datatype [NOT NULL] [:= | DEFAULT default_assignment]name为要声明的变量或常量的名字; CONSTANT声明的是一个常量,如果没有,则声明的是一个变量; datayepe是可以赋值给这个变量的数据类型或者子类型; not...原创 2019-07-06 14:54:03 · 5443 阅读 · 0 评论 -
Oracle数据库(二):条件控制
目录if语句:简单case语句搜索case语句NULL语句:有时候需要什么都不做(if条件符合时,什么都不做),可以用NULL语句:NULL;(NULL加个分号),什么都不做,类似于java中的“;”。条件:在条件判断中,会出现三种情况:true、false、null。其中null当作false来处理。if语句注意:一个if必须要有一个匹配的end if。end和if之...原创 2019-07-06 15:04:50 · 3223 阅读 · 0 评论 -
Oracle数据库(三):循环控制
目录简单循环WHILE循环数值型FOR循环游标FOR循环CONTINUE和EXIT语句:他们都有两种形式:CONTINUE;和CONTINUE WHEN conditon;EXIT;和EXIT WHEN conditon;这里:“exit;”可以直接用,执行了之后就退出循环;“exit when condition”:当condition为true时,退出循环。CONTIN...原创 2019-07-06 15:12:18 · 3163 阅读 · 0 评论 -
Oracle数据库(四):异常处理
目录声明异常抛出异常捕获异常异常名称和错误代码关联如果PL/SQL发生了错误,就会抛出一个异常,当前PL/SQL块中执行单元就会暂停处理,如果当前块有一个异常处理单元的话,控制会转移到当前块的异常处理单元来处理异常。完成了异常处理后就不能再返回当前块,相反,控制会转移到外层包围块,如果有的话。有时候,需要的是如果发生异常,还是希望程序继续执行后续的代码。解决的方法是:be...原创 2019-07-06 15:21:00 · 3744 阅读 · 0 评论 -
Oracle数据库(五):记录类型
记录类型变量只能保存一行数据,如果SELECT语句返回多行就会错。基于表的记录类型:用表名加%ROWTYPE属性的方法可以声明一个记录类型,该记录类型的每个字段都和表中的一列相互对应并且语句相同的名字:one_book book%ROWTYPE 基于游标的记录类型:可以对显示声明的游标或者游标变量加上%ROWTYPE的方法声明一个基于游标的记录类型,这个记录类型中的每一个字段都对应着游标se...原创 2019-07-06 15:31:12 · 4852 阅读 · 0 评论 -
Oracle数据库(十七):包
包:就是把一组PL/SQL的代码元素组织在一个命名空间下。包由两部分组成:规范部分(必须的,类似与java的接口),包体部分(可选的,类似于接口的实现);规范部分:PACKAGE favorites_pkgAUTHID CURRENT_USERIS /* or AS */c_choolate CONSTANT PLS_INTEGET :=16; --定义常量;TYPE...原创 2019-07-09 13:04:10 · 3318 阅读 · 0 评论 -
Oracle数据库(十六):局部块和重载
局部块:在声明部分定义一个PROCEDURE或者FUNCTION,这个定义的块只能在当前块中使用;定义和使用的方法和之前没有却别,完全一样;重载:同属于一个作用范围的多个程序使用的都是一个名字,那么这些名字就是重载的;(也就是说PROCEDURE和FUNCTION可以发生重载,只要他们的名字一样)。重载后,在调用的时候,会根据实际的参数列表和不同的重载模块的参数列表比较,寻找一个可以互相匹配的...原创 2019-07-09 13:01:55 · 2955 阅读 · 0 评论 -
Oracle数据库(八):对象类型
对象类型:封装了数据结构和用于操纵这些数据结构的过程和函数。分两部分组成:对象类型头:用于定义对象的公用属性和方法; 属性:最少要包含一个属性,最多包含1000个属性。定义时必须提供属性名和数据类型,但不能指定默认值和not null。并且不能包括long、long raw、rowid、urowid和PL/SQL特有类型(boolean\%type\%rowtype\ref curdor等...原创 2019-07-08 13:20:45 · 4076 阅读 · 0 评论 -
Oracle数据库(九):事务管理
目录COMMIT语句ROLLBACK语句SAVEPOINT语句SET TRANSACTION命令LOCK TABLE语句自治事务commit:保存上一个commit或者rollback以来发生的所有变化,并且释放锁资源; rollback:撤销从上一个commit或者rollback以来发生的所有变化,并且释放锁资源; rollback to savepoint:撤...原创 2019-07-08 13:31:51 · 3393 阅读 · 0 评论 -
Oracle数据库(十):游标
游标可以简单的理解为一个或多个表查询得到的记录,或者说把游标理解为指针,指向一个或多个表查询得到的记录。所以,游标必须要和一个SQL语句关联起来。oracle中游标分为静态游标和REF游标两类。其中静态游标包含:显示游标和隐式游标。用REF CURSOR声明的变量为游标变量;CURSOR表达式可以把一个SELECT语句转化成REF CURSOR结果集。游标属性:要使用一个游标属性,只需...原创 2019-07-08 13:59:32 · 3266 阅读 · 0 评论 -
Oracle数据库(六):表类型
表类型也叫做嵌套表。使用记录类型变量只能保存一行数据,这限制了SELECT语句的返回行数,如果SELECT语句返回多行就会错。Oracle提供了另外一种自定义类型,也就是表类型,它是对记录类型的扩展,允许处理多行数据,类似于表。创建表类型的语法如下:TYPE table_name AS | IS TABLE OF data_type [ NOT NULL ];语法说明如下:...原创 2019-07-08 13:05:37 · 3795 阅读 · 0 评论 -
Oracle数据库(十一):原生动态SQL(NDS语句)
原生动态SQL(NDS语句):通过一个新的语句无缝地集成到PL/SQL语言中,这个语句就是EXECUTE IMMEDIATE,这个语句会立即执行一个SQL语句,然后增强已有的OPEN FOR语句功能,这样就可以执行多行的动态查询了。EXECUTE IMMEDIATE用来执行指定的SQL语句:EXECUTE IMMEDIATE sql_string[INTO {define_variab...原创 2019-07-09 08:49:49 · 3291 阅读 · 0 评论 -
Oracle数据库(十二):存储过程
过程可以通过OUT或者IN OUT参数返回数据。可以作为一个单独的语句执行;PROCEDURE [shema.]name[(parameter[, parameter...])] [AUTHID DEFINER | CURRENT_USER]IS [declarations]BEGIN executable statements --这个过程被调用时要执行的语句[ EX...原创 2019-07-09 12:48:04 · 3122 阅读 · 0 评论 -
Oracle数据库(十三):函数
函数是通过return语句返回数据;只能作为一个可执行语句的一部分执行。如果没有参数,可以不用写括号;函数能返回任何的数据类型,但是不能返回一个异常;FUNCTION [shema.]name [(parameter[,parameter...])] RETURN return_datatype[AUTHID DEFINER | CURRENT_USER][DETERMINISTIC...原创 2019-07-09 12:52:46 · 3016 阅读 · 0 评论 -
Oracle数据库(十四):表函数
表函数是一个可以在查询语句的FROM子句中调用的函数,看起来就像一个关系表一样。表函数所返回的数据类型是集合(包括嵌套表或者VARRAY),而后者又可以通过TABLE操作符转换成可以在SQL语句中被查询的结构。在FROM子句中调用函数,必须:函数定义中的RETURN的数据类型必须是一个集合类型(嵌套表或者VARRAY) 确保函数的所有参数都是IN模式的,而且这些参数使用的都是SQL能够识...原创 2019-07-09 12:54:58 · 4434 阅读 · 0 评论 -
Oracle数据库(十五):参数
参数模式: 模式 说明 参数用途 IN 只读的 在模块内部可以使用实参的值,但是不能修改参数,这也是默认模式; OUT 只写的 模块内部可以给参数赋值,但是参数值不能被使用; IN OUT ...原创 2019-07-09 12:59:03 · 3721 阅读 · 0 评论 -
Oracle中,关于空值的问题
在oracle数据库中,空值是一个特殊的。比如要查询出一个表中,某个字段为空或者不为空的数据,不能直接用=或者<>,要使用is null或者is not null。以上可以说是一个常识性问题,一般都不会犯。不过,下面要说的问题,可能会被大多数人忽略:背景比如,在权限系统中,根据角色ID,要找出具有这个角色的用户和不具有这个角色的用户。所以,这里相关的表有fyk_user(用户表)...原创 2019-09-19 16:39:45 · 2744 阅读 · 0 评论