如何创建函数
Oracle 事物与游标
Oracle 事物与游标
例:
--添加函数
create or replace function car_add_func
(car car%rowtype)
return NUMBER
as
BEGIN
INSERT Into car values(car_seq.nextval,car.type,car.price,car.create_date,car.exhaust);
COMMIT;
return 1;
EXCEPTION
when OTHERS then rollback;
dbms_output.put_line('添加失败');
return 0;
END;
--调用函数
set serveroutput on;
exec car_add_pro('福特蒙迪欧','2.0T',200000.00,'1-1月 -15');

declare car_ car%rowtype;
begin
car_.type:='JEEP自由光';
car_.price:=250000.00;
car_.create_date:='25-9月 17';
car_.exhaust:='2.5T';
dbms_output.put_line('影响行数是'||car_add_func(car_));
end;


视图的特点
是一个数据库中虚拟的表
经过查询操作形成的结果
具有普通表的结构
不能实现数据的存储
对视图的修改将会影响实际的数据表
--添加视图
create or replace view emp_dept_view
as select * from emp NATURAL JOIN dept;

--删除视图
drop view emp_dept_view;


同义词 公共同义词
例:
SELECT * FROM sys.access$
select * from all_tables where table_name='DUAL'
--创建同义词
create SYNONYM access_ for sys.access$
--使用同义词
select * from access_
select * from sys.aw$
--创建公共同义词
create public synonym aw_ for sys.aw$
--使用同义词
select * from aw_
--删除同义词
drop synonym access_
--删除公共同义词
drop public synonym aw_


游标
游标用来处理从数据库中检索的多行记录(使用select语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集

游标的分类
静态游标:结果集已经确定
1.隐式游标:所有的dml语句为隐式游标
2.显示游标:用户显示声明
动态游标

游标的声明

Oracle 事物与游标
例:
set serveroutput on;
--查询所有的员工信息,并打印信息
declare
CURSOR emp_info is select * from emp;
emp_ emp%rowtype;
begin
open emp_info;--打开游标
loop
fetch emp_info into emp_;--把游标数据(结果集)放入到变量中
exit when emp_info%notfound;--当不存在下一条数据时就结束循环
dbms_output.put_line('员工编号是'||emp_.empno||',员工姓名是'||emp_.ename||',基本工资是'||emp_.sal);
end loop;
close emp_info;--关闭游标
end;

declare
cursor emp_info is select * from emp;
emp_ emp%rowtype;
begin
for emp_ in emp_info loop
dbms_output.put_line('员工编号是'||emp_.empno||',员工姓名是'||emp_.ename||',基本工资是'||emp_.sal);
end loop;
end;

游标的属性:
Oracle 事物与游标

例:
set serveroutput on;
declare
CURSOR emp_info is select * from emp;
emp_ emp%rowtype;
begin
if emp_info%isopen -- 判断游标是否打开
then dbms_output.put_line('游标已打开');
else
open emp_info;
end if;
loop
fetch emp_info into emp_;
exit when emp_info%notfound;
dbms_output.put_line(emp_.empno);
end loop;
close emp_info;
end;

例:
--编写一个PL/SQL程序块,对名字以‘A’或‘S’开始的所有雇员按他们的基本薪水(sal)的10%给他们加薪(对emp1表进行修改操作)
create table emp1 as select * from emp;--把一张表的数据备份到新表中

set serveroutput on;
declare
cursor e_cur is select * from emp where ename like 'A%' or ename like 'S%' ;
emp_ emp%rowtype;
begin
for emp_ in e_cur loop
emp_.sal:=emp_.sal*1.1;
update emp1 set sal=emp_.sal where empno=emp_.empno;
end loop;
commit;
exception
WHEN others then rollback;
end;
);

相关文章:

  • 2021-08-29
  • 2021-08-11
  • 2021-07-07
猜你喜欢
  • 2021-10-25
  • 2021-12-04
  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
  • 2018-07-10
  • 2021-11-12
相关资源
相似解决方案