随笔分类 -  Oracle 随笔

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常【转载】
摘要:游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 游标有两种类型:显式游标和隐式游标。在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种 形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标 对应一个返回结果为 阅读全文
posted @ 2011-02-27 00:25 玲珑少年 阅读(3557) 评论(0) 推荐(0) 编辑
fetch bulk collect into 批量效率的读取游标数据 【转载】
摘要:通常我们获取游标数据是用 fetch some_cursor into var1, var2 的形式,当游标中的记录数不多时不打紧。然而自 Oracle 8i 起,Oracle 为我们提供了 fetch bulk collect 来批量取游标中的数据。它能在读取游标中大量数据的时候提高效率,就像 SNMP 协议中,V2 版比 V1 版新加了 GET-BULK PDU 一样,也是用来更高效的批量取设备上的节点值。 fetch bulk collect into 的使用格式是:fetch some_cursor collect into col1, col2 limit xxx。col1、col2 阅读全文
posted @ 2011-02-27 00:09 玲珑少年 阅读(7635) 评论(0) 推荐(1) 编辑
如何在Oracle中复制表结构和表数据 【转载】
摘要:1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 2. 只复制表结构: create table table_name_new as select * from table_name_old where 1=2; 或者: create table table_name_new like table_name_old 3. 只复制表数据: 如果两个表结构一样: insert into table_name_newselect * fromtable_name_old 如果两个表结构不一样: inse 阅读全文
posted @ 2011-02-26 23:23 玲珑少年 阅读(91108) 评论(0) 推荐(4) 编辑
Oracle 外连接和 (+)号的用法 【转载】
摘要:对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。1. LEFT OUTER JOIN:左外关联 SELECTe.last_name,e.department_id,d.department_nameFROMemployeeseLEFTOUTERJOINdepartmentsdON(e.department_id=d.department_id);等价于 SELECTe.last_name,e.department_id,d.department_nameFROMemployeese,departmen 阅读全文
posted @ 2011-02-26 23:06 玲珑少年 阅读(763) 评论(0) 推荐(0) 编辑
Oracle 小知识点
摘要:-- 表 create table test (names varchar2(12), dates date, num int, dou double); -- 视图 create or replace view vi_test as select * from test; -- 同义词 create or replace synonym aa for dbusrcard001.aa; -- 存储过程 create or replace produce dd(v_id in employee.empoy_id%type) as begin end dd; -- 函数 create or rep 阅读全文
posted @ 2011-02-26 19:29 玲珑少年 阅读(387) 评论(0) 推荐(0) 编辑
oracle case when的用法 【转载】
摘要:SELECT col1, col2, CASE WHEN col3 > 1 AND col3 <2 THEN '1' WHEN col3 > 2 AND col3 <3 THEN '2' WHEN col3 > 3 AND col3 <4 THEN '3' ELSE '4' END mylevel FROM table1 SELECT CASE SIGN(5 - 5) WHEN 1 THEN 'Is Positive' WHEN -1 THEN 'Is Negative& 阅读全文
posted @ 2011-02-26 19:21 玲珑少年 阅读(466) 评论(0) 推荐(0) 编辑
Oracle to_char格式化函数 [转载]
摘要:Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。 注意:所有格式化函数的第二个参数是用于转换的模板。 表 5-7. 格式化函数 函数 返回 描述 例子 to_char(timestamp, text) text 把 timestamp 转换成 string to_char(timestamp 'now','HH12:MI:SS') to_char(int, text) text 把 int4/int8 转换成 string to_ 阅读全文
posted @ 2011-02-26 19:09 玲珑少年 阅读(272) 评论(0) 推荐(0) 编辑
游标属性SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT [转载]
摘要:当执行一条DML语句后,DML语句的结果保存在四个游标属性中,这些属性用于控制程序流程或者了解程序的状态。当运 行DML语句时,PL/SQL打开一个内建游标并处理结果,游标是维护查询结果的内存中的一个区域,游标在运行DML语句时打开,完成后关闭。隐式游标只 使用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三个属性.SQL%FOUND,SQL%NOTFOUND是布尔 值,SQL%ROWCOUNT是整数值。 SQL%FOUND和SQL%NOTFOUND 在执行任何DML语句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在执行DML语句后,SQL%FOUN 阅读全文
posted @ 2011-02-22 21:58 玲珑少年 阅读(1606) 评论(0) 推荐(1) 编辑
EXECUTE IMMEDIATE 用法 【转载】
摘要:EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE 阅读全文
posted @ 2011-02-21 16:46 玲珑少年 阅读(955) 评论(0) 推荐(1) 编辑
PLSQL 循环游标 cursor loop fetch into【转载】
摘要:PLSQL 循环游标 cursor 的一点心得体会 编辑 文章分类:数据库 set serveroutput on---------------打印输出信息,默认是FALSE declare --------------------申明变量,分号结束 v_pages number; v_numberPerPage number; v_totalPages number; v_cur sys_refcursor; diy_id number; diy_name varchar2(50); diy_date date; cursor c_list is select * from tabl 阅读全文
posted @ 2011-02-21 12:11 玲珑少年 阅读(21577) 评论(0) 推荐(0) 编辑
oracle表关联应用 【转载】
摘要:关联在oracle数据查询是用得最多得东西,灵活的应用可以解决很多实际应用的问题.下面给出一些示例: 建表create table ab(ab_id number(5),ab_name varchar2(30));create table bb(bb_id number(5),bb_name varchar2(30));插入数据insert into ab(ab_id,ab_name) values(1,'1ab_name');insert into ab(ab_id,ab_name) values(2,'2ab_name');insert into ab(ab_id,ab_name) val 阅读全文
posted @ 2011-02-20 18:53 玲珑少年 阅读(1391) 评论(0) 推荐(0) 编辑
in和exists的区别与SQL执行效率分析 【转载】
摘要:in和exists的区别与SQL执行效率分析 本文对in和exists的区别与SQL执行效率进行了全面整理分析…… 最近很多论坛又开始讨论in和exists的区别与SQL执行效率的问题, 本文特整理一些in和exists的区别与SQL执行效率分析 SQL中in可以分为三类:   1、形如select * from t1 where f1 in ('a','b'),应该和以下两种比较效率   select * from t1 where f1='a' or f1='b'   或者 select * from t1 where f1 ='a' union all 阅读全文
posted @ 2011-02-20 18:26 玲珑少年 阅读(639) 评论(0) 推荐(0) 编辑
Oracle创建表语法 - create
摘要:--创建Oracle表 -- 使用create关键字****** --(1)创建新表use 数据库(在那个数据库中建表)create table 表名(字段名1(列名) 数据类型 列的特征,字段名2(列名) 数据类型 列的特征(NOT NULL),......) --(2)创建带有主键约束的表语法create table 表名(字段名1(列名) 数据类型 列的特征,字段名2 数据类型 列的特征(NOT NULL),......primary key(主键列字段)) --(3)利用现有的表创建表 -- 注意:仅复制Oracle数据表结构:采用的是子查询方式create table 新表assel 阅读全文
posted @ 2011-02-20 18:16 玲珑少年 阅读(11754) 评论(0) 推荐(1) 编辑
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 [转载]
摘要:Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将 一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) sele 阅读全文
posted @ 2011-02-20 17:28 玲珑少年 阅读(249) 评论(0) 推荐(0) 编辑
oracle 只读事务 (转载)
摘要:一致性读是oracle区别于其他数据库的重要特点之一,但一般来说,这个一致性读是sql级别的,只针对单个sql有效。由于业务逻辑需要,我们可能需要在一个事务中的多个sql也能实现读一致性,也就是说,数据源在事务开始时就定下来了,不受其他会话影响。oracle的只读事务可以实现这个功能,它可以在事务级别上实现读一致性。 看下面的实验:SQL> select * from t1; ID--------------------------------------- 1SQL> set serverout onSQL> SQL> create or replace proced 阅读全文
posted @ 2010-12-16 00:05 玲珑少年 阅读(3186) 评论(0) 推荐(0) 编辑
疑问?
摘要:如何防止oracle触发器失效?怎样构建一个如果失效了怎么办的机制? 阅读全文
posted @ 2010-12-15 22:41 玲珑少年 阅读(123) 评论(0) 推荐(0) 编辑