oracle 存储过程深入学习与应用
2024-10-09 21:15:34
对于存储过程已经有过一周的学习时间了,但是之学到一些皮毛,争取根据基础,熟练后能进行深入。
--1、存储过程创建存储过程的语法:
CREATE [
OR
REPLACE ]
PROCEDURE procedure_name [
(
parameter_list
) ] {IS | AS} [ local_declarations ]
BEGIN
executable_statements [
EXCEPTION
exception_handlers ]
END [ procedure_name ];
--其中:procedure_name是过程的名称。 parameter_list是参数列表。 local_declarations是局部声明。 executable_statements是可执行语句。 exception_handlers是异常处理程序。
--示例1: 演示创建过程(参数列表中为IN参数赋予一个默认值,不能为OUT、IN OUT参数赋予默认值)
create or replace procedure find_emp
(
emp_no in number := 7900
)
as
empname varchar2(20);
begin
select
ename
into
empname
from
emp
where
empno = emp_no
; dbms_output.put_line('雇员姓名是 '
|| empname);
exception
when no_data_found then
dbms_output.put_line('雇员编号未找到');
end find_emp;
--调用过程:EXECUTE procudure_name(parameters_list);
--也可以在过程里面调用,直接写上procudure_name而不必写EXECUTE。
--示例2:演示创建带OUT参数的过程
create or replace procedure test
(
value1 varchar2
, value2 out number
)
is
identity number;
begin
select
sal
into
identity
from
emp
where
empno = value1
; if identity < 2000 then
value2 := 1000;
else
value2 := 500;
end if;
end;
--调用带OUT参数的过程:
declare
value2 number;
begin
test('7900', value2);
dbms_output.put_line(value2);
end;
--示例3:演示创建带IN OUT参数的过程
create or replace procedure swap
(
p1 in out number
, p2 in out number
)
is
v_temp number;
begin
v_temp := p1;
p1 := p2;
p2 := v_temp;
end;
--调用带IN OUT参数的过程:
declare
num1 number := 100;
num2 number := 200;
begin
swap(num1, num2);
dbms_output.put_line('num1= '
|| num1);
dbms_output.p ut_line('num2= '
|| num2);
end;
--示例4:将过程的执行权限授予其他用户
GRANT EXECUTE ON find_emp TO scott;
GRANT EXECUTE ON swap TO PUBLIC;
--将find_emp过程的执行权限授予给用户scott,将执行swap过程的权限授予所有数据库用户。
--删除过程语法:
DROP PROCEDURE procudure_name;
最新文章
- Unique Binary Search Trees
- IP和端口的相关检测
- 微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug
- 玩转渗透神器Kali:Kali Linux作为主系统使用的正确姿势TIPS
- BZOJ 3043
- Ural1057 - Amount of Degrees(数位DP)
- 3xian之所在
- UNIX网络进程间通信漫谈(1)
- jquery插件datepicker
- HDU - 5036 Explosion
- DIV 实现可拖拽 功能(留档)
- 使用关系型数据库作为Redis落地的思路
- chrome无法登陆账号,显示操作超时的解决方案
- docker 发布方式尝试
- Why Random Initialization in Neural Network?
- Maven解决包冲突
- vue 修饰符
- AR 前言
- dedecms自定义表单时间时间戳值类型的转换方法
- 《算法》第五章部分程序 part 5
热门文章
- Java基于POI实现excel任意多级联动下拉列表——支持从数据库查询出多级数据后直接生成【附源码】
- makefile从入门到入门
- 043 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 05 do-while循环介绍及应用
- matlab中fseek 移至文件中的指定位置
- AngularJS应用访问Android手机画廊
- ls: 显示目下的内容及相关属性信息
- golang Gin framework with websocket
- Linux执行脚本让进程挂掉后自动重启
- 多测师讲解接口测试_F12中network里headers各项属性的含义——高级讲师肖sir
- Warning: Permanently added the RSA host key for IP address &#39;52.74.223.119&#39; to the list of known hosts.