Oracle知识点简介(4)
来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:21 点击:次
简单说,Oracle游标提供了以一种对多行数据的查询结果集中的每行数据单独处理的方式,是设计交互式应用程序常用的编程接口。
游标分为显示游标和隐式游标,隐式游标是oracle提供的游标,显示游标是用户自定义的游标。
游标的使用步骤:
1)声名游标
2)打开游标
3)提取游标
4)关闭游标
使用游标的几种方式
1.一般调用方式
declare
cursor c1(v_ss nvarchar2)--声名了一个个带参数的游标
is
select * from stu where ss=v_ss;--游标的select语句
v_stu c1%rowtype;--基于游标定义的变量,可以存储游标取出的每一行数据
begin
open c1(224);
loop
fetch c1 into v_stu;
exit when c1%notfound;
dbms_output.put_line('name'||v_stu.name||' '||'ss'||v_stu.ss);
end loop;
close c1;
end Cursor1;
拓展:(过程中使用游标)
create or replace procedure Cursor1
(
v_ss nvarchar2
)
is
cursor c1
is
select * from stu where ss=v_ss;
v_stu c1%rowtype;
begin
open c1;
loop
fetch c1 into v_stu;
exit when c1%notfound;
dbms_output.put_line('name'||v_stu.name||' '||'ss'||v_stu.ss);
end loop;
close c1;
end Cursor1;
2.使用游标for循环来操作游标
create or replace procedure Cursor2
(
v_ss nvarchar2
)
is
cursor c1
is
select * from stu where ss=v_ss;
begin
for c1_rec in c1--c1_rec为能存储游标单行的记录变量
loop
dbms_output.put_line('name'||c1_rec.name||' '||'ss'||c1_rec.ss);
end loop;
end Cursor2;
使用游标for循环,自动完成打开关闭游标的功能
3.使用游标来更新和删除数据。
create or replace procedure Cursor3
(
v_ss nvarchar2
)
is
cursor c1
is
select * from stu where ss=v_ss for update;--加一个for update
begin
for c1_rec in c1
loop
update stu set name='nb' where current of c1; --逐行更新。
end loop;
end Cursor3;
Oracle触发器介绍
触发器是一种特殊的过程,与普通过程不同的是,过程需要用户显式的调用才能执行,而触发器则是当事件发生时oracle服务器触发执行。
要点:
触发时机:before和after,在动作前触发还是动作后触发
触发事件:insert update delete或是三个的逻辑组合
条件谓词:inserting(insert 触发时为true) updating [column x](更新具体列是为true)deleting(删除时为true)
语法:
CREATE [OR REPLACE] TRIGGER trigger_name
AFTER | BEFORE | INSTEAD OF
[INSERT] [[OR] UPDATE [OF column_list]]
[[OR] DELETE]
ON table_or_view_name
[REFERENCING {OLD [AS] old / NEW [AS] new}]
[FOR EACH ROW]—行级触发器,每操作一行都会触发一次
[WHEN (condition)]
pl/sql_block;
如:
create or replace trigger test1
before
update on stud
declare
begin
DBMS_OUTPUT.PUT_LINE('更新了');
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>