orcale-存储过程

select * from emp;
select * from dept ;

– 创建一个存储过程 ccgc1
create or replace procedure ccgc1
as
begin
– 打印 输出
dbms_output.put_line(‘hello word, my name is stored procedure’);

end;

– create 是创建
– create or replace 是 创建 存在 就修改
– procedure 是 存储过程
– 游标都存储在 procedures 文件力进行管理

– 调用 存储过程 的三种方式
–第一种调用方式
declare
begin
ccgc1;
end;

– 第二种调用方式
begin
ccgc1; --在此处也可使用ccgc1();完成存储过程的调用
end;

– 第三种调用方式
call ccgc1();–call 存储过程名可完成调用,注意括号不能少

– 创建一个带参数 的存储过程
create or replace procedure myDemo02(name in varchar,age in int)
as
begin
– orcal 字符串拼接 使用 ||
dbms_output.put_line(‘name=’||name||’, age=’||age);
end;

– 调用带参数的 需要传递参数
call myDemo02(1,2);

– in代表输入,out用于输出,参数默认类型是in类型。
create or replace procedure myDemo04(name out varchar,age in int)
as
begin
dbms_output.put_line(‘age=’||age);
select ‘ex_sunqi’ into name from dual;
end;

declare
– declare 声明变量
name varchar(10);
age int;
begin
myDemo04(name=>name,age=>25);
dbms_output.put_line(‘name=’||name);
end;

– 异常写法
create or replace procedure myDemo03
as
age int;
begin
age:=1/0;
dbms_output.put_line(age);
–异常
exception when others then
dbms_output.put_line(‘error’);
end;

call myDemo03();

– 循环
create or replace procedure myDemo5
as
n_count number := 0;
begin
while n_count < 5 loop
dbms_output.put_line(n_count);
n_count := n_count + 1;
end loop;
end;

begin
myDemo5;
end;

select * from emp;
create or replace procedure myDemo06
as
begin
FOR USE in (select * from emp) loop
if (USE.EMPNO<7698) then
dbms_output.put_line(USE.EMPNO);
end if;
end loop;
end;

call myDemo06();

– 创建的存储过程
create or replace procedure mydemo07(ID in int, user_name in varchar,pssword in varchar, created_date in DATE,
created_by IN varchar,UPDATED_date IN DATE,UPDATED_by IN varchar,is_valid IN varchar)
as
begin
insert into T_USER_INFO VALUES(ID,user_name,pssword,created_date,created_by,UPDATED_date,UPDATED_by,is_valid);
–UPDATE T_USER_INFO t SET t.USER_NAME=‘sunqi’ WHERE t.ID=ID ;
–DELETE T_USER_INFO t WHERE t.ID=ID ;
commit; --提交
end;

begin
mydemo07(3,‘ex_sunqi’,‘666666’,SYSDATE,‘ex_sunqi’,SYSDATE,‘ex_sunqi’,‘Y’);
end;

– 1.方法之间的 调用 传递对象 需要 name=>这种形式 是赋值还是? age=>25
– 2.select ‘ex_sunqi’ into name 给对象 复制 但是 如果有多条数据呐

– 3.exception when others then 是捕获异常吗
– 4. age:= 是在 方法内 赋值吗
– 5. 存储 过程 在哪里管理 进行删除
– 6. while 条件 loop 条件 := 条件+1 end lop;
– 7. for usr in (select * from student ) loop db.put(usr.name)end loop ;

– 简单存储过程调用

declare
– 1 声明游标
cursor cur_stu_info is
select * from stu_info;
v_stu_info cur_stu_info%rowtype;
begin
– 2 开启游标
open cur_stu_info;

– 3 获取数据(一次获取一行)
fetch cur_stu_info
into v_stu_info;
dbms_output.put_line(v_stu_info.id || ’ : ’ || v_stu_info.name);

– 4 关闭游标
close cur_stu_info;

end;

– 属性 返回值类型 作用
– sql%isopen 布尔型 判断游标是否 ‘开启’
– sql%found 布尔型 判断游标是否 ‘获取’ 到值
– sql%notfound 布尔型 判断游标是否 ‘没有获取’ 到值(常用于 “退出循环”)
– sql%rowcount 整型 ‘当前’ 成功执行的数据行数(非 “总记录数”)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值