Oracle基础学习笔记(4)

1, instead of 触发器

例句:create trigger update_emp_job_view

     Instead of update

On emp_job

    Begin

      Update emp

      Set empno=:new.empno,

         Ename=:new.ename,

         Job=:new.job

Where empno=:old.empno;

End;

                  

在该示例中可以看出,在触发器主体中有一个对表emp的update关键字。由于emp_job视图是建立在emp表上的视图。所以,如果更新这个视图时,实际上就是更新该视图的基本表。

 

2, 系统时间触发器

Oracle系统还允许开发人员建立与特定系统事件相关的触发器。这些特定事件如下:

(1)      数据库启动

(2)      数据库关闭

(3)      服务器错误等

示例:

Create trigger ad_startup

After startup

On database

Begin

PL/SQL代码位置

End;

 

另外两个:

Before shutdown

Before servererror

 

补充:删除触发器:drop trigger trigger_name;

     禁用触发器:alter trigger trigger_name diaable;

 

 

插入日期时的格式:

(1)      insert into values(‘5-1月-12’);

(2)      insert into table_name(date’2012-1-5’);

 

复制表:create table emp_copy

       As select * from emp;

但如果想复制表结构,不想复制数据:

Create table emp_copy

As select * from emp

Where 1=2;

 

3, 控制语句

(1)      条件

If ……then…….else语句

有三种形式,分别如下:

第一种形式:

If expression then

语句

End if;

 

第二种形式:

If expression then

语句

Else

 语句

End if;

 

第三种形式:

If expression then

语句

Else if expression then

 语句

Else

语句

End if;

 

(2,case语句

 

Case value

When expression then

语句;

When expression then

语句;

……..

Else

语句;

End case;

 

4, 循环

(1)      无限制循环

  其基本语法格式为:;loop…….end loop.无限制循环是指如果没有exit语句,循环将一直进行下去。

例句:set serverout on   //打开屏幕输出

 

Declare loops number:=0;

Begin

  Dbms_output.put_line(‘循环开始’);

Loop

If loops>4 then

Exit;

End if;

Dbms_output.put_line(‘第’||loops||‘次循环’);

Loops:=loops+1;

End loop;

Dbms_output.put_line(‘循环结束’);

End;

 

(2)      while循环

例子:

Declare loops number :=0;

Begin

Dbms_output.put_line(‘循环开始’);

While loops<5 loop

Dbms_output.put_line(‘第’||loops||‘次循环’);

Loops:=loops+1;

End loop;

Dbms_output.put_line(‘循环结束’);

End;

/

5, 情景查询

(1)      decode()函数

decode(value_expression,search_value,result_value,default_value)

 

参数含义:

value_expression;表示将要与搜索值比较的值或表达式

search_value;表示将要搜索的值

result_value:表示search_value参数与value相等时value_expression参数的取值结果

default_value;表示search_value参数与value不相等时value_expression参数的取值结果

 

例句:select name ,sal,decode(deptno,’10’,’会计部’,’20’,’研发部’,’30’,’销售部’,’其他部门’) from emp

 

(2)      case表达式

    语法格式如下:

Case search_expression

When expression_1 then display_result_1

When expression_2 then display_result_2

……

When expression_n then display_result_n

Else default_display_result

End

 

参数意义如下:

search_expression:表示用于检索的表达式,一般情况下是表中的列名称

expression_1,……,expression_n:表示用于比较的表达式

display_result_1,……..,display_result_n:表示用于比较的表达式与search_expression参数匹配时应该显示的结果。

 

例句:select ename,sal,

     Case deptno

         When 10 then ‘会计部’

         When 20 then ‘研发部’

          Else ‘其他部门’

End

From emp;

 

与简单的case表达式相比,搜索表达式的每一个条件都可以不同,因此更加具有灵活性,搜索case表达式的语法格式如下:

Case

When expression_1 then display_result_1

When expression_2 then display_result_2

……

When expression_n then display_result_n

Else default_display_result

End

 

例句:select ename.case

When hiredate<’1-7月-01’ then ‘老员工’

When hiredate>’1-7月-01’ and hiredate<=’1-7月-02’ then ‘普通员工’

When hiredate>’1-7月-02’ then ‘新员工’

End from emp;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值