oracle中PL/SQL学习笔记

存储过程中立即执行SQL语句

execute immediate sql;

在sqlplus中执行存储过程

 execute 存储过程名

oracle同义词创建,默认为私有同义词

  create synonym ctb for item.chinastudentbook@dblink6;

公有同义词

create public synonym ctb for .... 

同义词删除

drop synonym ctb;
drop public synonym pb_ctb;

定义常量,constant关键字

  c_id constant number := 50;

绑定变量,使用:变量名的方式

SQL> begin
	:bd:='hello you';
	end;
SQL> print bd;

定义子类型

declare
	subtype sub_num is number(5,1);
	v2 sub_num;
begin
 	null;
end;

循环支持reverse反转

for counter in [reverse] 开始值..结束值  loop

end loop;

无条件退出

loop

exit

end loop;

有条件退出

loop

exit when y > 3;

end loop;

无条件继续

loop

continue;

end loop;

有条件继续

loop

continue when y>3;

end loop;

goto语句,需要定义标签,定义标签的语法<<标签名>>

declare
	...
begin
	<<hbk>>
	...
	if v1>20 then
	goto hbk;
	end if;
	...
end;

当程序执行到goto语句时,不再执行goto之后的语句,而是跳转到标签hbk处,从hbk后的代码开始执行。

关于PL/SQL中的异常
在这里插入图片描述

declare
	...
begin
	...
exception
	when 异常1  then
	对异常1进行处理;
	when 异常2 then
	对异常2进行处理;
	...
	when others then
	...
end;

捕捉异常

when  others then
dbms_output.put_line('Error code:'||SQLCODE||'   '||SQLERRM);

SQLCODE和SQLERRM都是Oracle预定义函数,前者返回错误代码,后者返回错误信息。

自定义异常,语法如下:
“异常的名字” exception

pragma exception_init(exception_name,-Oracle_error_number);

编号的范围-20000到-20999

触发方式,三种
1、由oracle自动触发异常
2、使用raise语句手工触发
3、调用存储过程raise_application_error手工触发

declare
	myecp exception;
begin
	raise myecp;
	exception when myecp then
	dbms_output.put_line('myecp error..');
end;


declare
	myecp2 exception;
	pragma exception_init(myecp2,-20009);
begin
	raise_application_error(-20009,'data is out of list');
	exception when myecp2 then
	dbms_output.put_line('Error code:'||SQLCODE||'  '||SQLERRM);
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值