Simple PL/SQL 函数和包
存储过程
理解
孙老师竟然说它是一个类似于c++的类。满足事务性,比函数更高效。
语法
其中参数的IN,OUT,INOUT,分别代表输入参数,输出参数,输入后可输出参数。
- IN 实参传给形数,只读不写
- OUT 形参给实参,可读可写
- INOUT 用膝盖想想
- defualt 默认是IN
- 命名以“sp+内容”
12345678910 CREATE [OR REPLACE] PROCEDURE procedure_name[(parameter[{IN|OUT|IN OUT}]) date_type,……]RETURN return_type;{IS|AS}declaration sectionBEGINExecutable statementsEXCEPTIONException handlers;END ;
样例
我现在有这么一张表,来创造一个存储过程。
12345678910111213 CREATE OR REPLACE PROCEDURE InsertCourse(course_name in varchar , course_id in number)ISBEGININSERT INTO courseVALUES(course_name,course_id);EXCEPTIONWHEN DUP_VAL_ON_INDEX THENdbms_output.put_line('重复编号');WHEN OTHERS THENdbms_output.put_line('发生其他错误');END InsertCourse;/
调用
|
|

函数
语法
|
|
样例
写一个求阶乘的函数
12345678910 create or replace function Fac(n in number)return numberasres number:=1;beginfor i in 1..n loop res:=res*i;end loop;return res;end Fac;/
调用

包
理解
PL/SQL语言是数据库语言,这里的“包”类似与面向对象语言java中的包,是一组相关的过程、函数、变量、常量和游标等元素组合。这本来是一个比较复杂的内容,结果孙老师简单讲了讲就不说了,估计也就是了解的水平,那我也懒得说。不过要提醒读者一下,包还有私有成员、实例化、重载、管理程序包和执行权限等精彩内容,大家慢慢探索。
包头
只申明,无具体内容
12345 CREATE OR REPLACE PACKAGE course_pkgISPROCEDURE InsertCourse(course_name in varchar,course_id in number);FUNCTION Fac(n in number) return number;END course_pkg;
包体
|
|
调用
|
|

