
Oracle PL/SQL编程
文章平均质量分 77
304的的哥
一个被产品经理耽误的,摄影师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
oracle中rowid和rownum简介
问题:oracle将ROWID和ROWNUM区别开了吗?如果他们有区别,那么他们的区别是什么呢?回答:正如你的地址唯一的标识了你的住处,一个oracle的rowid唯一的标识了一条数据的物理地址。rowid提供了你找到这一行数据所需要的所有信息,硬盘号,柱面,块和所在块上的偏移地址。rownum是一个伪码,一个你可以在SQL*Plus中引用的占位符。rownum可以用于书写专业的sql翻译 2011-03-20 17:06:00 · 1834 阅读 · 0 评论 -
oracle 谨慎授予用户dba权限
//我们来看下面这个授权的二叉树,实际中肯定是个图(复杂的图): sys / / test001(dba) test002(dba) / / / t1 t2 t3--//如上二叉树所示,假设test001和test002都被授予了dba权限,//test001和test原创 2011-05-01 06:51:00 · 3573 阅读 · 1 评论 -
oracle 求两个连续日期的时间点之间相隔的小时数和分钟数
//求两个连续的时间之间的差值dt1 dt205:10 05:2023:15 01:30//结果:0.1h2.3h//或者10m135m//以小时格式显示with t as( select '05:10' dt1,'05:20' dt2 from dual union all select '23:15','01:30' from d原创 2011-05-18 18:00:00 · 5075 阅读 · 0 评论 -
oracle before触发器
//怎么在数据插入表之后,将表中的两个字段信息调换?//将添加到表中的数据调换位置,这个是发生在insert发生时,//那么这个问题就得用触发器来做;//我们是用before触发器还是用after触发器呢?//交换数据,应该是发生在insert之后,所以用after触发器://但是,当我建立好after触发器之后执行,却出现下面的错误提示://ORA-04084: cannot cha原创 2011-05-19 21:41:00 · 2569 阅读 · 0 评论 -
oracle 空值排序
//数据: 车厢 旅客人数 价格 餐别 日期 车次 一等车厢 30 30 米饭 2011-4-1 T40 二等车厢 70 15 三明治 2011-4-1 T40 三等车厢 100 8 面包 2011-4-1 T40 //结果:车次 日期 一等车厢 二等车厢原创 2011-05-27 16:46:00 · 1763 阅读 · 1 评论 -
oracle 构造类似desc命令和查看表中字段所占空间
//我们常常使用desc命令查看表结构:SQL> desc scott.emp;Name Type Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO NUMBER(4) ENAME VA原创 2011-06-01 19:21:00 · 3367 阅读 · 0 评论 -
oracle 结果的排序与执行计划有关
SQL> --表中原始数据SQL> select * from user_sd1104;ID PASS NAME---- ---- -------1005 1234 chengzh1004 1234 hahah1003 1222 fdfdfdf1002 1234 v1v2v21001 2345 liyiSQL> set autot on expSQL> --ORACLE根原创 2011-06-10 06:01:00 · 1867 阅读 · 1 评论 -
oracle简单查询
--=================--author:yeeXun--date:2010-11-25 16:46:00--address:17-304--================= oracle简单查询查看表结构SQL>desc table_name; 查询所有列SQL>select * from table_name;❤少用此查询,因为原创 2010-11-25 16:46:00 · 1486 阅读 · 0 评论 -
Oracle Savepoint
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as scott --输出0到9这9个数字SQL> set serveroutput onSQL> begin 2 dbms_output.enable; 3 for ctr in 0..9 loop原创 2010-12-01 15:28:00 · 1511 阅读 · 0 评论 -
Oracle %TYPE和%ROWTYPE
1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量: DECLARE v_FirstName VARCHAR2(20); 但是如果first_name列的定义改变了会发生什么(比如原创 2010-12-02 21:59:00 · 2181 阅读 · 0 评论 -
Oracle 记录类型和%TYPE
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0Connected as scott SQL> set serveroutput on;SQL> declare /*定义一个记录类型*/ 2 type BookRecordis record( 3 bo原创 2010-12-03 07:09:00 · 1011 阅读 · 0 评论 -
oracle sql优化01
第一篇 基本的Sql编写注意事项尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替。不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代。Oracle在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT IN效率稍高。但具体在选择IN或EX转载 2010-12-24 20:12:00 · 1007 阅读 · 0 评论 -
oracle sql优化02
第二篇 一、 先介绍一下oracle的SGA:数据库的系统全局区,SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。1、 共享池又由两部分构成:共享SQL区和数据字典缓冲区。共享SQL区专门存放用户SQL命令,oracle使用最近最少使用等优先级算法来更新覆盖;数据字典缓冲区(library cache)存放数据库运行的动态信息。数据库运行一段时间后,DBA需要查看这些内存区域的转载 2010-12-24 20:26:00 · 1112 阅读 · 0 评论 -
procedure 小应用
创建存储过程,语法:create or replace procedure procedure_name(parameter_name in|out|in out datatype)is|asbegin procedure_body;end procedure_name;执行存储过程:1.exec pracedure_name;2.call pracedu原创 2011-03-07 10:24:00 · 1616 阅读 · 1 评论 -
oracle dual table
1、DUAL表的用途Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中--查看当前连接用户Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 Connected as SYSSQL> select user from dual;原创 2011-03-09 12:54:00 · 1926 阅读 · 0 评论 -
oracle comment on的用法
oracle中用comment on命令给表或字段加以说明,语法如下:COMMENT ON { TABLE [ schema. ] { table | view } | COLUMN [ schema. ] { table. | view. | materialized_view. } column | OPERATOR [ schema. ] opera原创 2011-03-11 12:16:00 · 11544 阅读 · 0 评论 -
关于count(1)和count(*)
关于count(1)和count(*)先说说他们的作用:计算所查询的表或者视图中数据的总行数。很多人都有这样的疑问,count(1)比count(*)更高效吗?下面来做个简单的测试:SQL>set timing on;SQL> select count(1) from all_objects; COUNT(1)---------- 38958Execu原创 2011-03-16 19:55:00 · 1415 阅读 · 0 评论 -
oracle实现fibonacci数列
方法一:SELECT REPLACE(MAX(SYS_CONNECT_BY_PATH(fib||', ', '/')),'/','')||'...' fiblist FROM ( SELECT n, fib, ROW_NUMBER() OVER (ORDER BY n) r FROM (select n, round((power((1+sqrt(5))*原创 2011-03-20 11:51:00 · 2018 阅读 · 0 评论 -
oracle 索引常用命令
1.创建索引create [unique]index index_name on table_name(col_1,col_2,...)tablespace tabspace_name;2.改变索引的存储参数alter index index_name pctfree 30 storage(initial 200k next 200k);3.给索引手工分配一个分区alter index原创 2011-04-06 09:34:00 · 2531 阅读 · 0 评论 -
oracle data_length和data_precision的区别
这两个属性都属于user_tab_columns视图,他们的含义:data_length:当前列数据类型的字节长度 如:EMPNO NUMBER(4) 22 ENAME VARCHAR2(10) 10data_precision:列相关数据类型(数字类型)的具体长度(有效位数),一个十进制数(NUMBER类型),或一个二进原创 2011-04-08 08:30:00 · 11947 阅读 · 0 评论 -
oracle 查看特定用户所拥有的表
1.普通用户下 1.1查看user_tables视图 select table_name from user_tables; TABLE_NAME ------------------------------ PROJECT_MANAGE SALGRADE BONUS EMP DEPT // 1.2查看all_tables视图[sysdba用户下,或者普原创 2011-04-08 14:51:00 · 2891 阅读 · 0 评论 -
oracle create view语法
视图实际上是一个或多个表上的预定义查询,这些表称为基表。视图并不存储数据,只是在查询视图时才访问基表。视图的优点: ·限制用户只能通过视图检索数据,对用户屏蔽基表 ·可以将复杂的查询编写为视图,减少用户查询的复杂度 ·限制某个视图只能访问基表中的部分数据,提高了安全性//创建视图create [or replace] [{force|noforce}] view原创 2011-04-08 21:21:00 · 24846 阅读 · 0 评论 -
oracle 更新相同表问题
描述:ta,tb两表的结构完全相同,现在想要以tb中的数据去更新ta表,要求:以ta为准,若ta中没有的数据,将tb中的数据完全合并到ta中; 若ta中有的数据,但不完全,一些字段为空,那么将tb中相同id的字段去更新ta表,--方法一:用全连接,结合nvl函数:with ta as( select 1 id, 23 age, 'lilei' name, 'ddd@1原创 2011-04-19 17:37:00 · 2013 阅读 · 0 评论 -
oracle trunc for dates
//下面是trunc(dt,format)关于时间的应用:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YYYY-MM-DDHH2'------------------------------2011-04-21 06:41:30 //现在时刻--select t原创 2011-04-21 06:58:00 · 3115 阅读 · 0 评论 -
oracle extract()截取时间值函数
//oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分//语法如下:EXTRACT ( { YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIM原创 2011-05-17 21:12:00 · 15355 阅读 · 0 评论 -
oracle 按照日期区间求和
//求两个日期之间的数据之和//2011/03/16为起始日,2011/09/15为结束日//没一个月为一个梯度,也就是3.16-4.15,4.16-5.15,...//数据: 日期 金额 2011/03/16 20 2011/03/17 30 2011/04/14 50 2011原创 2011-05-25 21:40:00 · 3484 阅读 · 0 评论 -
oracle 使用拼接字符串更新表
//数据tacol_1 col_2-----------abcd//结果:col_1 col_2-----------a z0001b z0002c z0003d z0004//create table ta( col_1 varchar2(2), col_2 varchar2(7))/insert i原创 2011-05-26 10:46:00 · 2437 阅读 · 0 评论 -
oracle 求连续日期的起始日期和终止日期
//数据1 2011-2-11 2011-2-21 2011-2-31 2011-2-111 2011-2-121 2011-2-13//结果1 2001-2-1 2011-2-31 2011-3-11 2011-2-13//解法:with t as ( select 1 id, date'2011-2-1' mydate from dual union all原创 2011-06-03 06:30:00 · 2897 阅读 · 0 评论 -
Oracel 简单查询2
--======================--author:yeeXun--date: 2010-11-26 10:35:00--address:17-304--======================Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected a原创 2010-11-26 10:35:00 · 973 阅读 · 0 评论 -
PL/SQL控制结构
一.顺序结构顺序结构就是按照语句出现的先后顺序执行 二.选择结构选择结构即if结构,通过判断条件为true或为false来执行相应的代码,有下面3种结构1.if-then 这个结构只有一个测试条件,如果条件为true则执行then部分的代码,如果条件为false则跳过此结构,下面是一个实例: declare var原创 2010-11-30 14:08:00 · 1245 阅读 · 0 评论 -
oracle系统函数
--===============--author:yeeXun--date:发表于 @2010年12月21日 17:03:00--address:Jau 17-304--=============== 一.字符函数♢lower(char):将字符串转化为小写格式♢upper(char):将字符串转化为大写格式♢length(char):返回字符串的原创 2010-12-21 17:03:00 · 1405 阅读 · 0 评论 -
oracle过程
--==============================--author:yeeXun--date:发表于 @2010年12月22日 15:37:00--address:Jau 17-304--============================== PL/SQL语句块有两种:命名块和匿名块。他们的区别在于:a.匿名块没有自己的名称,以declare原创 2010-12-22 15:37:00 · 1337 阅读 · 0 评论 -
Oracle binary_float和binary_double类型的特殊值实例
--==============================--author:_yeeXun--date:12/29/2010 9:59:00 AM--address:Jau 17-304--==============================SQL> create table binary_test 2 (bin_float binary_float,原创 2010-12-29 09:59:00 · 3801 阅读 · 0 评论 -
plsq小案例
①简单没有定义部分setserveroutputon--打开输出选项begin dbms_output.put_line('hello');end;Dbms_output是oracle提供的包,此包包含的一些过程,put_line就是一个dbms_output包的过程。 ②有定义和执行部分的块declare v_enamevarchar2(5);原创 2011-01-08 20:24:00 · 1326 阅读 · 0 评论 -
oracle对2位年份的处理
Oracle数据库中存储4位的年份,但是当你只提供2位数字的年份,那么oracle就会根据你所使用的YY还是RR格式来解释实际,如果提供了完整的年份,那是最好的。1.RR格式: 指定年的2位数字00-4950-99 当年的后两位数字00-49规则1:指定年的前两位数字就等于原创 2011-03-09 16:55:00 · 2454 阅读 · 0 评论 -
oracle instr函数
在oracle PL/SQL中,instr函数返回string2在string1中出现的位置,语法如下:instr(string1,instring2[,start_position[,nth_appearance]])string1:被搜索的字符串string2:在string1里面寻找的字符串start_position:从string1中开始搜索的位置,这是个可选参数,默认为原创 2011-03-14 17:22:00 · 2419 阅读 · 0 评论 -
统计字符串出现的次数
昨天学习instr函数(http://blog.youkuaiyun.com/BOBO12082119/archive/2011/03/14/6248848.aspx ),当我写子串在母串中出现的位置的查询时,有个想法:能不能找出子串在母串中出现的次数,或者oracle有没有这样的统计函数呢?由于才学oracle没多久,所以很多知识还未触及,所以想了个最笨的方法,如下:SQL>select sum原创 2011-03-15 14:35:00 · 2874 阅读 · 0 评论 -
找出10次考试中成绩连续下滑3次的学生
问题:从10次考试中,找出考试成绩连续下滑3次的学生姓名?解法:SQL>with tb as( 2 select 'aspen' sname,to_date('20100111','yyyymmdd')ttime,100 score from dual 3 union all 4 select 'aspen',to_date('20100211','y原创 2011-03-16 10:23:00 · 1367 阅读 · 0 评论 -
oracle substr小实例
问题:有如下字符串,aa,,cc,dd我需要弄成1 aa2 null3 cc4 dd 解法:SQL>SELECT id, 2 NVL(SUBSTR( 3 col1, 4 INSTR(col1,',',1,id)+1, 5原创 2011-03-16 11:32:00 · 1248 阅读 · 0 评论 -
oracle where语句中and,or,not的执行顺序
where子句里面的and,or,not:1.a and b(顺序执行) (1)a,b同true则true, (2)a,b一false则false, [1]若a为false,就没有必要在进行后面的判断了,整个表达式必为false; [2]若a为true,则进行后面的判断,b为true则表达式为true,若b为false,则整个原创 2011-04-03 21:02:00 · 4291 阅读 · 0 评论