Oracle:pl/sql 异常处理[转]
	
    
    
	
pl/sql 提供了强大而灵活的手段来捕捉和处理程序产生的异常,从而使 oracle 的用户远离一些令人烦恼的 bug 。 
  
pl/sql 异常处理的概念和术语 
  
在 oracle 中所有的错误都被认为是不应该发生的异常。一个异常可能是以下 3 种情况的一种: 
u       由系统产生的错误(“ out of memory ”或“ duplicate value in index ”) 
u       用户行为导致的错误 
u       应用程序给用户的一个警告 
pl/sql 用一种异常句柄的结构来捕捉和响应错误。正是有了异常句柄的存在,我们能很方便的分离异常处理代码与可执行代码。与线性的代码相比,为了处理异常,异常句柄提供了一种类似事件驱动的模式;换句话说,就是不管一种特定的错误在何时何地发生,它都将被同一个代码处理。 
当一个错误出现后,无论它是系统还是程序产生的,都将导致一个异常。之后,可执行程序被中断,控制权转移给异常处理代码。处理完异常后,程序将不会回到先前被中断的位置,相反的,控制权被交给了当前程序的外围模块(可能是程序,也可能是系统)。 
       procedure jimmy 
       is 
              new_value varchar(35) 
       begin 
|--------new_value:=old_value || ‘-new’; 
|          if new_value like ‘like%’ 
|          then 
|                 ….. 
|          end if; 
|   exception 
|----- à        when value_error 
              then 
                     ….. 
       end; 
因为 old_value 是一个未被定
    
     
	
	
    
    
	相关文档:
        
    
    http://blog.csdn.net/iamstillzhang/archive/2007/04/01/1548377.aspx
用mysql源码进行SQL解析
Mysql是通过yacc进行SQL语句解析的,这里介绍一下如何使用mysql的源码进行SQL语句解析。由于Mysql的源代码注释比较少,而且缺少资料,所有些地方研究不够深入。
1        Filed介绍
MY ......
	
    
        
    
     create table #a
(
a int identity(1,1) primary key,
b int default(0) not null,
c nvarchar(20)
)
insert into #a(c)
select 'a' union all
select 'b' union all
select 'c' union all
select 'd' union all
select 'e' 
select * from #a
alter table #a drop constraint DF__#a_____________b__12 ......
	
    
        
    
    几个删除重复记录的SQL语句
2009-03-02 10:08
比如现在有一人员表 (表名:peosons)
若想将姓名、身份证号、住址这三个字段完全相同的记录查询出来 
select   p1.*   from   persons   p1,persons   p2   where   p1.id<>p2.id &nb ......
	
    
        
    
     
SQLServer和Oracle是大家经常用到的数据库,在此感谢作者总结出这些常用函数以供大家参考。 
数学函数:
 1.绝对值 
   S:SELECT abs(-1) value 
   O:SELECT abs(-1) value from dual 
2.取整(大) 
   S:SELECT ceiling(-1.001) value 
   O:SELECT ceil(-1.001) value from dual 
3.取整(小)  ......
	
    
        
    
    ORDER BY 排序
 
ASC 升序(默认)
 DESC 降序
 
select * from s_emp order by dept_id , salary desc
部门号升序,工资降序
关键字distinct也会触发排序操作。
 
select * from employee order by 1; //按第一字段排序
NULL被认为无穷大。order by 可以跟别名。
 
select table_name  ......