PL/SQL语言&存储过程&存储函数

给变量赋值用 := 赋值 。

连接两个字符串用 || 连接,用加号是不好使的!
str1:=str2||str3;

if 条件 then
—业务逻辑
elsif 条件 then
—业务逻辑
end if;
其中的elsif需注意,并不是elseif。

游标的格式:

cursor c1 is select * from emp where deptno=10; —-给游标赋值
是is不是as!

游标是写在declare下的。

关于游标与for的应用:

declare
  cursor  c1 is  select * from emp where deptno=10; ----给游标赋值
  v_obj emp%rowtype;
begin
 for v_obj in c1   ---帮助我们做  openclose 操作
   loop  
     dbms_output.put_line(v_obj.empno || '==' || v_obj.ename);
   end loop;
end;

带参数的游标是在打开游标时赋予参数值的:

declare   -----参数的变量类型  不能写长度
  cursor  c1(dno number) is  select * from emp where deptno=dno; ----给游标赋值
  v_obj emp%rowtype;
begin
  open c1(20); ----打开游标  并赋值
  loop
    fetch c1 into v_obj;
    exit when c1%notfound;   ----判断游标为空后跳出
    dbms_output.put_line(v_obj.empno || '==' || v_obj.ename);
  end loop;
  close c1 ;----关闭游标
end;

存储过程:

是预编译到数据库的一段业务逻辑代码。
编写格式:

create  [or replace]  procedure  存储过程名称 (参数名称  [in]/out  参数的数据类型 ...)
as/is
 ---变量声明
begin
 ----业务逻辑
end;

存储过程的调用有两种方式:

-------------调用---------------
---1. 不常用
call  get_year_sals(7788);
---2.  常用
begin
  get_year_sals(7782);
end;

1方式不常用是因为它接收不了out类型的参数。

存储函数:

格式:

create  [or replace]  function  存储函数名称(参数名称  [in]/out  参数的数据类型 ...)return 返回值数据类型
as /is
begin
  retrun 返回值;
end;

存储函数与存储过程功能都差不多,存储函数的retrun返回值功能存储过程可以通过out类型的参数达到。
在调用时,返回值必须接收!

存储过程与存储函数的区别:

——-1. 语法稍有区别
——-2. 存储函数 能出现在sql语句中 存储过程不能

------自定义单行函数
select e.*,get_year_sals_fun(e.empno) from emp e ;

触发器:
格式:

create [or replace] trigger 触发的名称
before/after
insert/update/delete
onfor each row
declare
begin

end;

在工作中一般用不到触发器,因为功能太强大,风险性太大。

触发器可以用来oracle的主键的自增赋值,其中用到了序列:

create  or replace  trigger  tri_id_emp
before
insert
on emp
for each row
declare
v_id number(10);
begin
  select seq.nextval into v_id from dual;
  :new.empno :=v_id;
end;

注:触发器有两个级别,
———–语句级触发器 默认不写指令
———–行级触发器 如果要用 :old :new 必须写 for each row
:old 表示执行修改语句时修改之前的记录,并不是单一的字段,是整行记录。
:new表示执行修改语句时修改之后的记录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值