PL/SQL 子程序 -- 存储过程
来源:互联网 发布:淘宝开放平台开发 编辑:程序博客网 时间:2024/06/08 15:13
-- Start
子程序其实就是一个有名字的语句块,有两种类型的子程序,存储过程和函数。它们之间的区别是函数有返回值而存储过程没有。
嵌套存储过程(Nested Procedure)
一个存储过程可以定义在匿名块或另一个子程序中,我们把它叫做嵌套存储过程。
DECLARE ming varchar2(20) := 'Bo'; xing varchar2(20) := 'Shang'; -- 定义嵌套存储过程 PROCEDURE print( first_name varchar2, -- 注意,此处参数不能指定长度哦 last_name varchar2 ) IS -- 在此处申明变量 full_name varchar2(40); BEGIN full_name := last_name || ' ' || first_name; DBMS_OUTPUT.PUT_LINE('My name is ' || full_name); END print; BEGIN -- 调用存储过程方式一 print(ming, xing); -- 调用存储过程方式二 print(first_name => ming, last_name => xing); END;
独立存储过程(Standalone Procedure)
一个存储过程还可以定义在模式(schema)中,我们把它叫做独立存储过程。
-- 定义独立存储过程CREATE OR REPLACE PROCEDURE concatenate_name ( first_name varchar2, -- 默认是输入参数 last_name IN varchar2 := 'unknown', -- 输入参数同时定义了默认值 full_name IN OUT varchar2, -- 输入输出参数 error_code OUT number --输出参数)ISBEGIN -- 检查输入参数 IF first_name IS NULL OR last_name IS NULL THEN full_name := '未知'; -- 给输出参数赋值 error_code := -1; return; -- 返回 END IF; full_name := last_name || ' ' || first_name;END;DECLARE ming varchar2(20) := 'bo'; xing varchar2(20) := 'Shang'; xing_ming varchar2(40); error_code number(1);BEGIN -- 调用存储过程 concatenate_name(ming, xing, xing_ming, error_code); IF error_code < 0 THEN return; END IF; DBMS_OUTPUT.PUT_LINE(xing_ming);END;/
包存储过程 (Package Procedure)
一个存储过程还可以定义在包(package)中,我们把它叫做包存储过程。
-- 声明包CREATE OR REPLACE PACKAGE util ASPROCEDURE print(first_name varchar2, last_name varchar2);END util;-- 定义包CREATE PACKAGE BODY util AS --定义包存储过程PROCEDURE print( first_name varchar2, last_name varchar2 ) IS BEGIN DBMS_OUTPUT.PUT_LINE('My name is ' || last_name || ' ' || first_name); END print;END util;-- 测试包存储过程DECLARE ming varchar2(20) := 'Bo'; xing varchar2(20) := 'Shang';BEGIN -- 调用包存储过程 util.print(ming, xing); END;
重载存储过程
像 Java 一样,存储过程也是可以重载的,它特别适用于包存储过程,这样我们就可以使用同一个 API 根据不同的参数处理不同的事情。
--更多参见:Oracle PL/SQL 精萃
-- 声明:转载请注明出处
-- Last Edited on 2015-06-02
-- Created by ShangBo on 2015-01-22
-- End
0 0
- PL/SQL 子程序 -- 存储过程
- 存储函数和存储过程(PL/SQL子程序)
- Oracle pl/sql学习 之 子程序 过程和函数 存储过程 存储函数
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
- 106---oracle的PL/SQL,异常处理, 游标(CURSOR), 子程序,存储过程
- 109---oracle的oracle的PL/SQL,异常处理, 游标(CURSOR), 子程序,存储过程
- 开发PL/SQl的子程序和包 存储过程和函数
- PL/SQL子程序存储过程IN,OUT,IN OUT参数模式详解
- pl/sql 存储过程
- PL/SQL --> 存储过程
- PL/SQL存储过程
- PL/SQL存储过程
- Pl/sql 存储过程
- PL/SQL --> 存储过程
- pl/sql----子程序
- 建立PL/SQL子程序
- PL/SQL子程序
- PL/SQL 子程序 -- 函数
- android下创建数据库
- mac 安装 android开发环境
- Oracle - 数据库的实例、表空间、用户、表之间关系
- java基础:Sokcet通讯实例2,继续完善
- 读《在前行中蜕变》有感二
- PL/SQL 子程序 -- 存储过程
- Struts2中关于"There is no Action mapped for namespace / and action name"的总结
- UDP
- Link all references for a local rename (does not change references in other files)
- 实习篇---第四十三天
- PL/SQL 子程序 -- 函数
- Hibernate之hql语句查询
- 黑马程序员——学习Java前的准备、以及Java学习前基本常识总结
- Android开发 屏幕适配之像素密度适配