数据库存储过程

时间:2021-10-15 14:03:39

一 : 创建存储过程
/*
in 输入的参数 不可变 不可以再次赋值
out 可以重复赋值
in out 可以重复赋值
如果不写默认 都是 in 的
注意存储过程是没有返回值的
*/
create or replace procedure
mypro (table1 in varchar2,table2 out varchar2,con in out number) as -- as 可以在存储过程中声明变量
testone number;
testto date;
begin --开始

table2 := 'aaa';
testone := 10;

dbms_output.put_line(table1);
dbms_output.put_line(testone);
end mypro;

数据库存储过程

 

 

 二 : 运行存储过程1(可视化操作)

 

数据库存储过程

三 : 使用存储过程可以将当做java中的函数去使用,多数情况下使用存储过程进行将一张表中的数据做备份
但是普通用户是没有全限使用存储过程创建表的
就需要给用户授权(先以管理员的身份登录)
grant create table to pb

create or replace procedure

mypro (table1 in varchar2) as -- as 可以在存储过程中声明变量

sqltext varchar2(200);

begin --开始

sqltext := 'create table '||table1||'_copy as select * from '||table1;
Execute immediate sqltext;
commit;

-- 异常的处理 when 异常对象 others 代表所有的异常 then 异常后 执行的 代码块
exception when others then dbms_output.put_line('异常了');

end mypro;

 

数据库存储过程

测试,只需要将我们需要备份的表的名称传进去,就可以备份到表名称+_copy的表中
备份表的sql语句 如何复制数据
-- 目标表 不存在 创建目标表 复制数据 可以加where条件
create table pay_type_copy as select * from pay_type

-- 目标表 存在
insert into pay_type_copy select * from pay_type