1、语法
--创建存储过程
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_list)]
[IS|AS]
[local_declarations]
BEGIN
executable_statements
EXCEPTION
[exception_handlers]
END [procdure_name];
注意:OR REPLACE:可选。其实目的就是防止创建时有同名存储过程时报错。
2、存储过程的创建与调用
1、创建存储过程
/*
||=======================创建存储过程===================
*/
CREATE OR REPLACE PROCEDURE add_emp(
eno number,
name varchar2,
salary number,
job varchar2 default 'CLERK',
dno number
)
IS
BEGIN
INSERT INTO emp
(empno,ename,job,sal,deptno) VALUES (eno,name,job,salary,dno);
END;
2、调用存储过程
>>>传递参数的方式:①按照位置,②按照名称,③混合传参。
1)用命令调用
语法:EXEC[UTE] procedure_name (parameters_list);
SQL> EXEC add_emp(6666,'MARY',6000,'MANAGER',30);
PL/SQL 过程已成功完成。
SQL>
注意:命令方式也有三种传参方式。(参照在PL/SQL中调用即可)
2)用PL/SQL中调用
/*
||=======================调用存储过程===================
*/
-----------按位置传参-----------
BEGIN
--按位置传递参数
add_emp(1111,'MARY',2000,'MANAGER',10);
--按名字传递参数
add_emp(dno =>10,name => 'MARY',salary => 2000,eno=>2112,job=>'MANAGER');
--混合方式传递参数
add_emp(3111,dno =>10,name => 'MARY',salary => 2000,job=>'MANAGER');
END;
3、存储过程的访问权限
--授予fjh(用户)执行p(存储过程)的权限
GRANT EXECUTE ON p TO fjh;
--把p(存储过程)的权限设为public(公开)
GRANT EXECUTE ON p TO fjh;
--撤销权限
REVOKE EXECUTE ON p FROM fjh;
4、删除存储过程
--删除存储过程
DROP PROCEDURE p;