文档章节

oracle 程序包基础之基础

陈爱茹cx1992
 陈爱茹cx1992
发布于 2016/07/26 17:36
字数 505
阅读 2
收藏 0
程序包可以将若干个函数和存储过程组织起来,作为一个对象进行存储。
程序包由两部分构成:规范(specification) 和主体(body)

规范:是程序包的公共接口。类似于面向对象编程中的接口-只定义方法名称和参数,并不真正实现方法。

1.创建程序包规范(create or replace package)
  演示创建基于表students的规范
  create or replace package pkg_students as
         studentString varchar2(500);
         studentAge number :=18;
         function getStudentNameString return varchar2;
         procedure update_student(in_student_id in varchar2);
         procedure insert_student(in_student_id in varchar2,in_student_name in varchar2,
           in_student_age in number);
          procedure delete_student(in_student_id in varchar2);
   end pkg_students;
   
   说明:StudentString varchar2(500) 用于定义一个名为studentString 的可变字符串类型的变量;
   studentAge number :=18;用于定义一个名为studentAge的数值型变量,并将变量赋值为3;
   function getStudentNameString return varchar2;声明了一个函数;
   procedure update_student(in_student_id in varchar2);声明了存储过程;
     
   主体
   主体是真正实现功能的地方。主体必须实现规范中定义的函数和过程。
   1、创建程序包主体(create or replace body)
       create or replace package body pkg_students as
       ........       
       end pkg_students;
       
       具体
       
       create or replace package body pkg_students as

            function getStudentNameString return varchar2 as
              begin
                declare cursor cu_student is
                select student_name from students order by student_id;
                student_name varchar2(180);
                rowString varchar2(1000);

                begin
                  open cu_student;
                  fetch cu_student into student_name;
                  while cu_student%found loop
                    rowString :=rowString || student_name || ',';
                    fetch cu_student into student_name;
                   end loop;
                   return substr(rowString,1,length(rowString)-1);
               end;
              end getStudentNameString;


             procedure update_student(in_student_id in varchar2)  as
              begin
                update students set student_age = studentAge where student_id = in_student_id;
                commit;
              end update_student;

             procedure insert_student(in_student_id in varchar2,
               in_student_name in varchar2,
               in_student_age in number) as
               begin
                 insert into students values(
                        in_student_id,in_student_name,in_student_age
                 );
                 commit;
                end insert_student;

             procedure delete_student(in_student_id in varchar2) as
               begin
                 delete from students where student_id = in_student_id;
               commit;
               end delete_student;
         end pkg_students;

     2、调用程序包中 的函数/存储过程
     
         调用程序包中的函数
              select pkg_students.getStudentNameString() from dual;
              
         调用程序包中的存储过程
               begin pkg_students.delete_student(3);
               end;
         存储过程中使用程序包中变量
               begin pkg_students.update_student(9);
               end;
               将学生id=9的学生年龄改为18
           studentAge number :=18;在程序包规范中声明的变量 可以在主体存储过程中使用

本文转载自:http://blog.csdn.net/ruru7989/article/details/12403441

共有 人打赏支持
上一篇: css 圆角设置
下一篇: 今天星期几js
陈爱茹cx1992
粉丝 0
博文 59
码字总数 0
作品 0
济南
程序员
私信 提问
红帽Linux 6.5上配置ASM流程

ASM(Automatic Storage Management)是Oracle官方推荐的软件存储解决方案。自10g版本正式推出以来,软件架构层面上ASM的地位是在不断的提升。首先是11g将ASM从数据库层面剥离出来,并归入G...

青夜之衫
2017/12/06
0
0
福利:《系统运维管理专家》双11团购大礼包

本次活动技术涉及大型企业IT系统基础设施平台的管理与维护,技术涉及计算机基础、主机系统、数据库、网络、虚拟机、云计算、存储备份、JAVA基础、Python自动化、项目管理等技术,是大型企业《...

51CTO学院
2017/10/26
0
0
从oracle迁移带clob字段的表数据至postgresql

在oarcle的sql脚本中字段长度超过4000执行会有异常,而在postgresql中超过4000仍可以正常执行,产品同时支持多个数据库,如oracle和postgresql,在基础数据较多时,只能通过导出基础数据相关...

无知有趣
2014/09/26
0
0
Oracle11g 基于linux 6.3下安装

一、安装包: p13390677112040Linux-x86-64_1of7.zip p13390677112040Linux-x86-64_2of7.zip 二、:配置全局参数: 1、配置oracle用户的权限:vim /etc/security/limits.conf 在配置最后一行...

love壁虎
2016/12/20
0
0
众多行业客户采用Oracle管理云 提升用户体验和交付应用程序

客户采用Oracle管理云提升性能,并降低传统记录系统和创新化开发运维系统的成本 北京,2017年2月23日 — 甲骨文今天宣布Oracle管理云(Oracle Management Cloud)业务实现大幅增长,在其上市...

玄学酱
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
2
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
4
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部