首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >orcal的存储过程加上触发器,源码

orcal的存储过程加上触发器,源码

作者头像
思念是荒芜的梦
发布2026-01-09 12:58:55
发布2026-01-09 12:58:55
1190
举报
代码语言:javascript
复制
存储过程
它是oracle对象,相当于java中的方法,是一些sql语句的集合,它能完成复杂的业务过程处理,从而降低客户端的业务处理,提高效率。
set serveroutput on 

//创建存储过程
create or replace procedure stu_proc
is
declare
name varchar2(20);
begin
name:='算算';
dbms_output.put_line(name);
end;
/

begin   调用存储过程
stu_proc();
end;
/

execut stu_proc();调用存储过程


create or replace procedure stu_proc(name varchar2,sex varchar2,result out varchar2)
is
begin
insert into stu values(stu_id.nextval,name,sex);
result:='成功';
exception
when others then 
result:='失败';
end;


declare
re varchar2(30);
begin
stu_proc('aaa','male',re);
dbms_output.put_line(re);
end;


加游标的存储过程
create or replace procedure stu_proc(name varchar2,sex varchar2,result out varchar2)
is
stuinfo student%rowtype;
stucur sys_refcursor;
begin
open stucur for select * from student where stuname=name;
fetch stucur into stuinfo;
if stucur%notfound
then
insert into stu values(stu_id.nextval,name,sex);
result:='成功';
else
result:='已有此人,注册失败';
end if;
exception
when others then 
result:='失败';
end;

把游标返回给java
drop procedure stu_proc; 删除存储过程
create or replace procedure stu_proce(stucur out sys_refcursor)
is
begin
open stucur for select * from stu;
end;
/

declare
sturow stu%rowtype;
stuc sys_refcursor;
begin
stu_proce(stuc);
fetch stuc into sturow;
loop
dbms_output.put_line(sturow.stuname);
fetch stuc into sturow;
exit when stuc%notfound;
end loop;
end;
/


触发器
触发器是一种自动执行的程序,
//语句级触发器
create or replace trigger stu_trigger
after update 
on student 
declare
name varchar2(20);
begin 
name:='aa';
dbms_output.put_line(name);
end stu_trigger;
/
查看触发器
desc user_tables;
select table_name from user_tables;
desc user_sequences;
select sequence_name from user_sequences;
desc user_triggers;
select trigger_name from user_triggers;

//行级触发器
create or replace trigger stu_trigger
after update 
on student 
for each row//每执行一行执行一次
declare
name varchar2(20);
begin 
name:='aa';
dbms_output.put_line(name);
end stu_trigger;


create or replace trigger stu_trigger
after update 
on student 
for each row//每执行一行执行一次
declare
name varchar2(20);
begin 

dbms_output.put_line(:new.stuname||:old.stuname);
end stu_trigger;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档