PL/SQL(五):存储过程
来源:互联网 发布:linux 修改ip 编辑:程序博客网 时间:2024/05/12 17:46
一、存储过程
用途
用于执行某项操作,命名的 PL/SQL 块,能够接受传递的参数,能够被调用。
简述
命名的PL/SQL块
能够接受参数
能够被重复调用
用于执行某项操作
存储在数据库中
二、过程的参数
有三种
1、in 模式
默认模式
可以传递常量或变量
在过程内部,不能赋常量
允许有默认值,如:p_id in number default 7369
2、out 模式
调用时,必须用变量,但会忽略变量值
调用结束后,对变量赋值
3、in out 模式
传入参数值,并可以返回改变的值
备注:
不能限制参数中数据类型的大小
out和in out 参数不允许有默认值
四、代码示例
1、in 模式
参数模式说明: in , 输入模式,默认是in . 表示接收值,在过程代码中不能再赋值.
--in 模式create or replace procedure param_test_in (num int ,num2 in int)asbegin --num := 12; --in模式的参数,接收到值之后变为常量,不能赋值. dbms_output.put_line(num+num2);end;declare n1 int; n2 int;begin param_test_in(10,20); --给in模式参数传常量值. n1:=200; n2:=300; param_test_in(n1,n2); --给in模式参数传变量.end;
2、out 模式
参数模式说明:out , 输出模式. 表示输出值,在过程代码中,可以重新赋值.调用时,必须用变量调用.
--in + out 模式 /* 写一个存储过程,包含两个参数,p_sal为薪水参数(传入 参数),p_mes为信息参数(传出参数)当传入的薪水大于所 有薪水平均值时,将‘薪水太高了’信息传给信息参数;否则传递 ‘薪水正常’。*/create or replace procedure sal_proc( p_sal in emp.sal%type, p_mes out varchar )is v_sal emp.sal%type ;begin select avg(sal) into v_sal from emp ; if p_sal > v_sal then p_mes:='薪水太高了'; else p_mes:='薪水正常'; end if;end;
3、in out 模式
1)必须要用变量调用
2)过程可以获取到输入变量的值,
3)过程中变量可重新赋值.
4)过程执行完,也会输出值给调用时的变量.
-in + out + in out 模式CREATE OR REPLACE PROCEDURE raise_sal(p_id IN emp.empno%type, p_name OUT varchar2, p_sal IN OUT number)ISBEGIN UPDATE emp SET sal = sal + p_sal WHERE empno = p_id; SELECT sal,ename into p_sal,p_name FROM emp WHERE empno = p_id;END raise_sal;DECLARE v_sal emp.sal%type := 500; v_name emp.ename%type;BEGIN raise_sal(7369,v_name,v_sal); dbms_output.put_line('雇员:'||v_name||'现在的薪水是 '||v_sal);END;
4、其他常用语句
--命令行中,查看过程的错误.show errors PROCEDURE sal_proc;--删除过程drop procedure sal_proc;--授予权限 --1)直接授权grant select on emp to system; -- 表名 emp,用户名 system --2)间接授权grant execute on sal_proc to system; --存储过程 sal_proc,用户名 system--查看用户对象中的procedure和function中的对象名、对象类型 和 状态SELECT object_name, object_type,statusFROM user_objectsWHERE object_type in ('PROCEDURE','FUNCTION')ORDER BY object_name;--查看类型为【过程】的源代码,大写SELECT *FROM user_sourceWHERE type = 'PROCEDURE';
- PL/SQL(五):存储过程
- PL/SQL(五):存储过程
- pl/sql 存储过程
- PL/SQL --> 存储过程
- PL/SQL存储过程
- PL/SQL存储过程
- Pl/sql 存储过程
- PL/SQL --> 存储过程
- PL/SQL调试存储过程
- PL/SQL存储过程编程
- PL/SQL存储过程编程
- 关于PL/SQL---存储过程
- PL/SQL存储过程习题
- PL/SQL调试存储过程
- pl/sql 存储过程实例
- PL/SQL 调试存储过程
- PL/SQL存储过程编程
- oracle PL/SQL 存储过程
- GDAL编译
- windows2003搭建SVN服务器
- 敏捷开发之道(二)极限编程XP
- Ubuntu 搭建 NFS服务提供给 SC2440或SC6410开发板使用【要点整理】
- 在Ubuntu下用Eclipse开发ARM多线程程序
- PL/SQL(五):存储过程
- Android模拟器电脑键盘不能用
- win7下简单搭建Qt开发环境(不需安装vs)
- linux信号(sigprocmask,sigpending)
- Linux Qt 环境以及基础
- Xtrabackup全量备份与恢复mysql数据库
- Qt实现串口编程
- 字符串
- MinGW简介