oracle 里的函数调用问题和触发器,函数包的问题

当函数没有参数时,小括号可以省略!

create or replace function sal_tax(v_sal number)
return number
is
begin
if(v_sal <2000)then
return 0.10;
elsif(v_sal<2750)then
return 0.15;
else
return 0.20;
end if;
end;

 

调用问题

declare

v_a number;
begin

v_a :=sal_tax(2323);
dbms_output.put_line(v_a);
end;

测试的时候用这个也很好select sal_tax(2001) from dual;

 

 

如果调用的时候为

begin

sal_tax(2323);
end;

是不行的,提示说不是过程,或者你直接使用Pl/sql deverlper的测试功能吧!

-----------------------------------------------------------------------------------------------------------------------------------------------------

触发器的需求:谁要对哪张表做了修改就得记录是谁修改了,什么时间,做了什么动作!

 

现在测试这个触发器!

update emp2 set sal = sal*2 where depno = '20' ;

你可以看到emp2_log被插入了6条数据,因为目前是行级触发器!

如果是表级触发器,那么只会插入一条!

 

 

 

 

我们可以看到update的字段和参照的字段一致时,它 报错了,这个时候我们就用触发器能解决这个问题,在更新操作的时候就有一个旧值和新值得问题

,记住它是先检查触发器,然后再检查约束条件的!

 

 --------------------------------------------------------------------------------

 --------------------------------------------------------------------------------

 

函数包就和函数体就像接口和实现是一样的,必要要先定义接口,后定义包体!,接口中定义了方法不去实现,也定义了变量!这些变量是包里的所有过程,函数共享的!

 

create or replace package pkg_students

他们的名字是一样的!

create or replace package body pkg_students

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值