当函数没有参数时,小括号可以省略!
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;
如果调用的时候为
beginsal_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