【Oracle SQL Error】教程文章相关的互联网学习教程文章

OraclePL/SQL之WITH查询【图】

为什么要用WITH? 1. 如果需要在一段复杂查询里多次应用同一个查询,用WITH可实现代码重用; 2. WITH查询类似将查询结果保留到用 为什么要用WITH? 1. 如果需要在一段复杂查询里多次应用同一个查询,用WITH可实现代码重用; 2. WITH查询类似将查询结果保留到用户临时表里,,在大的复杂查询中可以减少IO,有一定的性能优化作用。 WITH查询有何限制与特性? 1. 如果当前schema下有与WITH查询别名相同的表,查询中WITH查询生成的表优...

OracleSQL语句分析ExplainPlan【图】

EXPLAIN PLAN 是一个很好的分析SQL 语句的工具,它甚至可以在不执行SQL 的情况下分析语句. 通过分析,我们就可以知道ORACLE 是怎么 EXPLAIN PLAN 是一个很好的分析SQL 语句的工具,它甚至可以在不执行SQL 的情况下分析语句. 通过分析,我们就可以知道Oracle 是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN 分析的结果是用缩进的格式排列...

OraclePL/SQL之不能在function里面调用DBMS_LOCK(GranttoroleORGran【图】

已知:测试用户tuser1,测试角色trole1,trole1已经授权给了tuser1。在测试一段程序时需要用到延时,于是就把dbms_lock授权给了t 已知:测试用户tuser1,测试角色trole1,trole1已经授权给了tuser1。 在测试一段程序时需要用到延时,于是就把dbms_lock授权给了trole1,放在匿名块里测试没有问题: 但是把它移到function里面却报错了: 很奇怪,难道不能在function里面用dbms_lock,google一下,,找到答案: 必须把dbms_lock的exec...

OraclePL/SQL之ENABLENOVALIDATE约束【图】

在看Oracle约束时,看到ENABLE NOVALIDATE,意思是对自现在起及以后的数据启用约束,但是不管以前的数据怎样。不过在实验的时候却 在看Oracle约束时,看到ENABLE NOVALIDATE,意思是对自现在起及以后的数据启用约束,但是不管以前的数据怎样。 不过在实验的时候却出了一点小问题: Google一下,发现原来在创建没有延时的UNIQUE或者PRIMARY KEY时会自动去创建一个唯一性索引。(By default a non-deferrable UNIQUE or PRIMARY KEY ...

OraclePL/SQL之SETTRANSACTIONREADONLY(事务隔离性)【图】

SET TRANSACTION READ ONLY实际上是实现数据库四大事务(ACID)中隔离性(Isolation)的一种手段,用来将数据的读一致性定在某一 SET TRANSACTION READ ONLY实际上是实现数据库四大事务(ACID)中隔离性(Isolation)的一种手段,,用来将数据的读一致性定在某一时间点,即不管其他事务如何更改数据(不能在当前session中再使用自治事务),在当前事务中进行查询的结果始终不变。由于Oracle的读一致性是通过undo段来实现的,所以如...

OraclePL/SQL之自定义函数的读一致性【图】

当我们将自定义函数应用于sql语句中,而该sql又需要执行很长时间,并且在这段时间中恰好又有其他dml会更改该sql中的某些表时,这 读一致性即确保查询的结果与发起查询的时刻的数据一致,不管在此查询期间其他事务有没有更改数据。 首先假设我们有如下函数用来根据部门id求该部门的总薪资: 然后我们开个session(s1),,执行如下查询(q1): 在q1执行的过程中,我们又开个新的session(s2),执行更新命令并提交: 接着回到s1,看...

OraclePL/SQL存储过程不能编译的问题【图】

最近开发人员遇到一个很奇怪的现象,在debug plsql过程的时候,发现单步进去的时候并是自己想要接口,而且打断点的时候也不会在其 最近开发人员遇到一个很奇怪的现象,在debug plsql过程的时候,,发现单步进去的时候并是自己想要接口,而且打断点的时候也不会在其地方断掉,也不会报任何错误。最终发现,原来是在package bodies中的包体中并没有追加“Add debug information"选项。

OracleSQL优化之使用索引提示一例【图】

下午做完其他的就打算优化一下这个SQL首先查看这个SQL的执行计划在PL/SQL Developer中的执行计划窗口中执行这个SQL然后得到执行计 在做数据库的安检时候,发现一个ORA-01555错误: 这个SQL语句明显运行了很长时间而没有完成。在观察Statspack报告中这个SQL也在top SQL中占用了大量的db cache。物理读很大。下午做完其他的就打算优化一下这个SQL首先查看这个SQL的执行计划在PL/SQL Developer中的执行计划窗口中执行这个SQL然后得到执...

OraclePL/SQL编程存储过程与函数【图】

1、共同使用的代码可以只需要被编写和测试一次,而被需要该代码的任何应用程序(如:.NET、C++、JAVA、VB程序,也可以是DLL库)调 本篇主要内容如下: 6.1 引言 6.2 创建函数 6.3 存储过程 6.3.1 创建过程 6.3.2 调用存储过程 6.3.3 AUTHID 6.3.4 PRAGMA AUTONOMOUS_TRANSACTION 6.3.5 开发存储过程步骤 6.3.6 删除过程和函数 6.3.7 过程与函数的比较 6.1 引言过程与函数(另外还有包与触发器)是命名的PL/SQL块(也是用户的方案对...

Oraclesql合并分解时间字段【图】

最近在做项目,有这么一个情况,目前数据库上面有3个字段,year,month,day分别表示年,月,日,现在我需要把他们合并到一起,可以使用这 最近在做项目,有这么一个情况,目前数据库上面有3个字段,year,month,day分别表示年,月,日,现在我需要把他们合并到一起,可以使用这种sql语法 to_date(y.year||y.month||y.day,yyyy-mm-dd) 这样就可以把他们3个合并到一个字段上面来了,那么我们也可以把他们分解开,像这样 to_char(t.collect_date,yyyy)...

OracleSQL空值排序(Nulls)【图】

在数据开发应用中,很多时候需要对数据进行排序,但是在Oracle 数据库中,有空值一说(NULL)。如果一个列中有的值是空的,则如果对 在数据开发应用中,很多时候需要对数据进行排序,但是在Oracle 数据库中,有空值一说(NULL)。如果一个列中有的值是空的,,则如果对此列进行排序的话,空值的行将被排序放到后面,如我对HR模式下的EMPLOYEES员工表按照佣金比率列进行排序的话, SELECT t.employee_id, t.last_name, t.commission_pct...

OracleSQL中的INEXISTS比较【图】

在Oracle SQL中取数据时有时要用到in 和 exists 那么他们有什么区别呢?1 性能上的比较比如Select * from T1 where x in ( selec 在Oracle SQL中取数据时有时要用到in 和 exists 那么他们有什么区别呢?1 性能上的比较比如Select * from T1 where x in ( select y from T2 )执行的过程相当于:select * from t1, ( select distinct y from t2 ) t2where t1.x = t2.y;相对的 select * from t1 where exists ( select null from t2 wh...

标准OraclePL/SQL异常处理【图】

环境:ORCLE 10G单独出现一个SQL,异常如何处理,这里不说。一)标准的含异常处理的PL/SQL块DECLARE no_Detail_record EXCEP 环境:ORCLE 10G单独出现一个SQL,异常如何处理,这里不说。一)标准的含异常处理的PL/SQL块DECLARE no_Detail_record EXCEPTION; PRAGMA EXCEPTION_INIT(no_Detail_record, -20000); v_nDetailCount number; BEGINselect count(*) into v_nDetailCount from tson where .....; ...

OracleSQL*PLUS【图】

--.sql脚本--唯一注意的是下面的f:\dropobj.sql 为操作的.sql;--你的电脑没有F盘,请换为D或者E其他存在的盘符--用于删除当前用户首页 → 数据库技术背景:阅读新闻Oracle SQL*PLUS - 删除当前用户的所有对象 [日期:2010-10-24] 来源:Oracle社区 作者:langxspirit [字体:]--.sql脚本--唯一注意的是下面的f:\dropobj.sql 为操作的.sql;--你的电脑没有F盘,,请换为D或者E其他存在的盘符--用于删除当前用户的所有对象--use for...

OracleSQL语句中正则表达式的应用

REGEXP_LIKE(匹配)REGEXP_INSTR (包含)REGEXP_REPLACE(替换)REGEXP_SUBSTR(提取)如 手机号码的表达式: ^[1]{1}[35]{1}[[:digit: REGEXP_LIKE(匹配)REGEXP_INSTR (包含)REGEXP_REPLACE(替换)REGEXP_SUBSTR(提取) 如 手机号码的表达式: ^[1]{1}[35]{1}[[:digit:]]{9}$查询客户信息表(tKHXX)中有手机号码(SJHM)的可以这样查询 1. SELECT * FORM tKHXX where REGEXP_LIKE(SJHM, ^[1]{1}[35]{1}[[:digit:]]{9}$ ) SELECT * FORM tK...