上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页
摘要: EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。-- 使用技巧1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE 阅读全文
posted @ 2012-07-02 13:25 *新*新* 阅读(293) 评论(0) 推荐(0)
摘要: 在Oracle9i里,Oracle提供了一个内部事件,用以强制刷新Buffer Cache,其语法为:alter session set events 'immediate trace name flush_cache level 1';或者:alter session set events = 'immediate trace name flush_cache';类似的也可以使用alter system系统级设置:alter system set events = 'immediate trace name flush_cache';在Orac 阅读全文
posted @ 2012-07-02 10:59 *新*新* 阅读(12363) 评论(0) 推荐(1)
摘要: 在每次执行 含语句:dbms_output.put_line() 的过程之前都要set serveroutput on 一下,否则dbms_output.put_line()无显示,如何解决?如果使用command或sqlplus,将SET SERVEROUTPUT ON size 1000000;放到db_1\sqlplus\admin\glogin.sql里。如果使用 SQL Developer,你不用设置任何 SET serveroutput on.在结果窗口,你可以添加一个DBMS Outputtab(查看->DBMS输出 点+连接数据库) 阅读全文
posted @ 2012-07-02 10:46 *新*新* 阅读(6758) 评论(0) 推荐(0)
摘要: 好处:1) WITH AS存储过程中使用,声明了就一定要用,不然会报错.2) 存储过程中如果有select 好像就一定得有into......3)复杂的查询会产生很大的sql,with as语法显示一个个中间结果,显得有条理些,可读性提高4) 前面的中间结果可以被语句中的select或后面的中间结果表引用,类似于一个范围仅限于本语句的临时表,在需要多次查询某中间结果时可以提升效率例子:with t as (select * from emp where depno=10)select * from t where empno=xxx再举个简单的例子with a as (select * fro 阅读全文
posted @ 2012-06-29 18:49 *新*新* 阅读(2623) 评论(0) 推荐(0)
摘要: 1. 概要说明数据库系统的显著特点需要保存大量历史记录,系统内存在许多历史记录表,因此常常出现系统运行一段时间,表记录数达到一定数量后,系统响应明显变慢的现象。为避免这种情况的出现,在有完备的数据库对象设计下,还在考虑到系统稳定情况下数据的变化情况,针对这种变化,在编写SQL语句必须遵循一定的优化规则,并制定完备的数据管理机制。2. 调优目的利用Oracle的内部优化器工作机制,合理改进查询语句的组织方式,提高数据库系统的响应速度,实现前端画面及平台应用的快速响应能力;同时统一开发人员的数据库开发编码的统一、规范。3. 调优原则充分利用表索引,避免进行全表扫描;充分利用SGA共享池缓存机制,提 阅读全文
posted @ 2012-06-29 18:17 *新*新* 阅读(344) 评论(0) 推荐(0)
摘要: Oracle over函数SQL code:sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。其参数:over(partition 阅读全文
posted @ 2012-06-29 17:18 *新*新* 阅读(216) 评论(0) 推荐(0)
摘要: sys_connect_by_path(字段名, 2个字段之间的连接符号),注意这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,',')。还有,这个函数使用之前必须先建立一个树,否则无用。举个例子:目的:将num值相等的项目写成 seq1,seq2,seq3,……的形式(SELECT num,REPLACE(MAX(sql0), ';', ',')FROM (SELECT num, sys_connect_by_path(sql1, ';') 阅读全文
posted @ 2012-06-29 16:59 *新*新* 阅读(546) 评论(0) 推荐(0)
摘要: ORACLE获取DDL(Create Table)的几种常用的方法(转载)大体的分为三种方法:一、可以通过toad、plsql develop等第三方工具进行导出DLL操作,用这种办法的好处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句的操作。二、直接通过EXP/IMP工具Oracle提供的最原始最实用的导入导出工具,我们大体上可以分为三种办法实现导出DDL。a. 通过imp指定indexfile参数,但这种办法不爽在于有每行前会有REM语法大体如下:exp userid=... tables=emp rows=n file=emp.dmpimp userid=... 阅读全文
posted @ 2012-06-29 13:43 *新*新* 阅读(6895) 评论(1) 推荐(1)
摘要: 先假设有这么一个表:createtableS_Depart(DepartIdINTnotnull,DepartNameNVARCHAR2(40)notnull,DepartOrderINTdefault0,constraintPK_S_DEPARTprimarykey(DepartId));在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。1、Create Sequence你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,CREATE SEQUENCE emp_sequenceINCREMENT B 阅读全文
posted @ 2012-06-29 11:10 *新*新* 阅读(163) 评论(0) 推荐(0)
摘要: oracle循环语句小结2011-11-28 15:35主要有以下五种循环:Exit When、Loop、While、For(普通循环)、For(游标循环),下面举例一一说明(均为存储过程)。1、Exit When循环:create or replace procedure proc_test_exit_when isi number;begini:=0;LOOPExit When(i>5);Dbms_Output.put_line(i);i:=i+1;END LOOP;end proc_test_exit_when;——————————————————–俺是分割线——————————— 阅读全文
posted @ 2012-06-29 10:34 *新*新* 阅读(266) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页