文档章节

oracle 程序包基础之基础

陈爱茹cx1992
 陈爱茹cx1992
发布于 2016/07/26 17:36
字数 505
阅读 2
收藏 0
点赞 0
评论 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

共有 人打赏支持
陈爱茹cx1992
粉丝 0
博文 59
码字总数 0
作品 0
济南
程序员
红帽Linux 6.5上配置ASM流程

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

青夜之衫 ⋅ 2017/12/06 ⋅ 0

福利:《系统运维管理专家》双11团购大礼包

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

51CTO学院 ⋅ 2017/10/26 ⋅ 0

手动删除oracle数据库

oracle数据库sqldatabaseloggingfile --===================== -- 手动删除oracle数据库 --===================== 的具体步骤,包含文件系统数据库以及ASM数据库。环境:Oracle Enterprise L...

燃灯 ⋅ 2014/11/03 ⋅ 0

从oracle迁移带clob字段的表数据至postgresql

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

无知有趣 ⋅ 2014/09/26 ⋅ 0

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 程序集说明

今天放出了AgileEAS.NET的ActiveXForm和SmartWin的体验,在大家对为东西有个简单的了解和感觉后,我会选择在合适的时间发放完整的开发包。 我想有的朋友安装了客户端也很想知道,那些程序集文...

agilelab ⋅ 2010/06/26 ⋅ 0

每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

本周为大家送出的书是《Oracle 12 c PL(SQL)程序设计终极指南》,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著。 内容简介: 《Oracle 12c PL/SQL程序设计终极指南》志在打造PL/SQL领...

zting科技 ⋅ 2017/12/11 ⋅ 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

.Net的Oracle数据库ORM控件dotConnect for Oracle下载及使用方法

原文来自龙博方案网http://www.fanganwang.com/product/1330转载请注明出处 dotConnect for Oracle完全基于ADO.NET方法,因此您完全可以采用标准ADO.NET数据提供的方法来使用它。是一款为Mic...

baobiaokongjian ⋅ 2014/05/04 ⋅ 0

众多行业客户采用Oracle管理云 提升用户体验和交付应用程序

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

玄学酱 ⋅ 04/18 ⋅ 0

Oracle :一次数据库连接,返回多个结果集

1. 一次数据库连接,返回多个结果集 1.1 建立包规范 create or replace package QX_GDJTJ is-- Author : xxx -- Created : 2012-1-1 -- Purpose : 统计主设备缺陷 TYPE TCURSOR IS REF CURS......

橘子红了呐 ⋅ 2017/11/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部