《PL/SQL 语言开发参考手册》之七:SUB PROGRAM

《PL/SQL 语言开发参考手册》之七:SUB PROGRAM

《PL/SQL 语言开发参考手册》下载地址
        1、SUB-PROGRAM
                1)匿名块 不存在于数据库中,每次运行,数据库都要再编译,再运行,不能在其他块中相互调用
                2)带名块 储存在数据库中,可以在任何需要的地方调用,可以做到代码重用(procedure(程序)、function(函数)、 package(包)、trigger(触发器))
        2、存储过程(PROCEDURE)        
                创建过程:

 
                        1)[OR REPLACE]:如果数据库中存在这个名字就先 DROP 再创建(覆盖)
                        2)[(arg_name[{IN|OUT|IN OUT}]TYPE,arg_name[{IN|OUT|IN OUT}]TYPE)] 参数列表;
                        其格式:(参数名1 {IN|OUT|IN OUT} 类型,参数名2 {IN|OUT|IN OUT} 类型 , ...)
                        3){IS|AS} 关键字,二者必须要选择其一。
                参数列表:
                        1)IN 模式:表示该参数不能被过程赋值(只能位于等号右边),只能由调用者在调用时输入值;
                        2)OUT 模式:表示该参数只能被过程赋值(只能位于等号左边),调用者不用传递参数值;
                        3)IN OUT 模式:表示该类型既能被过程赋值也能被调用者传值;
                        4)参数缺省为 IN 模式
                PROCEDURE_BODY
                        1)过程主体是一个拥有声明,执行和异常处理的完整的 PL/SQL 块
                        2)声明部分在 IS 或 AS 关键字与 BEGIN 关键字之间
                        3)执行部分在 BEGIN 和 EXCEPTION 之间
                        4)异常处理在 EXCEPTION 和 END 之间
        3、存储过程例子

 

 
        4、调用 PROCEDURE 的例子
                1)匿名块可以调;
                2)其他 PROCDEURE 可以调用;
                例:

 
                注:此时 v_var1 等于 7
        5、指定实参的模式
                1)位置标示法:调用时添入所有参数,实参与形参按顺序一一对应;

 
                2)名字标示法:调用时给出形参名字,并给出实参

 
                注:
                        a、两种方法可以混用,但混用时第一个参数必须通过位置来指定。
                        b、名字标记法对于参数很多的时候可提高程序的可读性
        6、使用缺省参数
                1)形参可以指明缺省值

 
                2)位置标记法时,所有的缺省值都放在最后面,使用名字标示法则无所谓
                3)如果使用的缺省值,尽量将缺省值放在参数表的末尾
        7、函数(Function)与过程(Procedure)的区别
                函数在所有的地方都与过程相似,都有名字,都有统一的形式:声明,执行与异常处理
                都可以存储在数据库中,也都可以声明在无名块的内部,函数可以看做是过程的一种特殊情况。
                差别:
                        1)过程调用本身是一个 PL/SQL 语句(可以在命令行中通过 exec 语句直接调用);
                        2)函数调用是表达式的一部分;
        8、函数的声明        

 
                注:
                        1)没有返回语句的函数将是一个错误;
                        2)在函数的主体内部,return 语句用来将控制通过一个数值返回给调用环境
                        3)在一个函数的主体中,可以使用多个 RETURN 返回语句
        9、删除过程与函数

 
    10、子程序
                1)位置:
                        a、Store subprogram 通过 CREATE OR REPLACE 命令创建,以编译后的形式存放在数据库中
                        b、本地子程序 没有 CREATE OR REPLACE 关键字,不由 CREATE FUNCTION 开头
                        子程序的定义放在无名块的声明部分且本地子程序只能是本地调用,其他块不能调用
                2)例:

posted @ 2010-12-11 21:43  Defonds  阅读(22)  评论(0编辑  收藏  举报