天天看点

嗨 甲骨文【3】

开发子程序

开发过程

建立过程

CREATE [OR REPLACE] PROCEDURE procedure_name(argument1 [mode1] datatype1,...)

IS[AS]

PL/SQL Block;

IS或AS用于开始一个PL/SQL块 mode可以是IN,OUT,IN OUT,默认是IN

参数传递方式

位置传递

调用子程序时,按照参数定义的顺序依次为参数指定相应变量或者数值

名称传递

调用子程序是指定参数名,并使用关联符号=>为其提供相应的数值或变量

组合传递

同时使用上述两者

删除过程

DROP PROCEDURE procedure_name;

开发函数

建立函数

CREATE [OR REPLACE] FUNCTION function_name(argument1 [mode1] datatype1,...)

RETURN datatype

IS[AS]

PL/SQL Block;

RETURN指定函数返回值的数据类型,函数体内要至少包含一条RETURN语句

开发包

包用于逻辑组合PL/SQL类型(TABLE类型和RECORD类型),PL/SQL型(游标和游标变量)和PL/SQL子程序(过程和函数)。它由包规范(Packege SPecification)和包体(Package Body)两部分组成。

建立包

建立包规范

包规范用于定义包的公用组件(常量、变量、游标、过程、函数)

CREATE [OR REPALCE] PACKAGE package_name

IS | AS

    public type and item declarations

    subprogram specifications

END package_name;

建立包体

用于实现包规范锁定义的过程和函数

CREATE [OR REPALCE] PACKAGE BODY package_name

IS | AS

    private type and item declarations

    subprogram bodies

END package_name;

调用包组件--包名.组件名

纯度级别(purity level)

定义

PRGMA RESTRICT_REFERENCES (function_name,WNDS,[WNPS][,RNDS][,RNPS]);

WNDS--用于限制函数不能修改数据库数据(禁止执行DML)

WNPS--用于限制函数不能修改包变量(不能给包变量赋值)

RNDS--用于限制函数不能读取数据库数据(禁止执行SELECT操作)

RNPS--用于限制函数不能读取包变量(不能将包变量赋值给其他变量)