n  包

包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。

为什么需要包:使用包可以更好的管理自己写的函数、过程

①我们可以使用create package命令来创建包:

 
 

create [or replace] package 包名  is

procedure 过程名(变量名 变量类型…);

function 函数名(变量名 变量类型…) return 数据类型;

end;

包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码。包体用于实现包规范中的过程和函数。

请编写一个包,该包有一个过程,该过程可以接收用户名和新的薪水,将来用于通过用户名去更新薪水;还有一个函数,该函数可以接收一个用户名,将来要实现得到用户的年薪是多少

create
or
replace
package
mypackage1 is

procedure
pro1(v_in_ename
varchar2,v_in_newsal
number);

function
fun1(v_in_ename
varchar2)
return
number;

end;

②建立包体可以使用create
package body命令

create [or replace] package body 包名  is

create [or replace] procedure
过程名(变量名 变量类型…) is

begin

执行语句;

end;

create [or replace] function 函数名(变量名 变量类型…) return 数据类型 is

定义变量;

begin

执行语句;

end;

end;

SQL>
create or replace package body mypackage1 is


procedure pro1(v_in_ename varchar2,v_in_newsal number) is

3   
begin

4     
update emp set sal=v_in_newsal where ename=v_in_ename;

5   
end;


function fun1(v_in_ename varchar2) return number is

7   
v_annual_sal number;

8   
begin

9     
select (sal+nvl(comm,0))*13 into v_annual_sal from emp where
ename=v_in_ename;

10     
return v_annual_sal;

11   
end;

12  end;

13  /

Package
body created

③如何调用包的过程或是函数

当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其他方案的,还需要在包名前加方案名。

(1)控制台

 
 

exec 方案名.包名.过程名(参数值…);

call  方案名.包名.函数名(参数值…);

(2)在java中取调用包下的函数或是过程应当:

String sql="{call
scott.mypackage1.pro1(?,?)}";

String sql="select
scott.mypackage1.fun1('KING') from dual";

细节:

①包体中药实现的方法或者是过程,应先在包中声明。

pl/sql基础知识—包的更多相关文章

  1. PL/SQL基础知识

    Oracle之PL/SQL学习笔记 自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了 ...

  2. pl/sql基础知识—定义并使用变量

    n  介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...

  3. pl/sql基础知识—pl/sql块介绍

    n  介绍 块(block)是pl/sql的基本成型单元,编写pl/sql程序实际上就是编写pl/sql块.要完成相对简单的应用功能,可能只需要编写一个pl/sql块:但是如果要想实现复杂的功能,可能 ...

  4. PL/SQL 基础知识简介

    1.PL/SQL代码块 PL/SQL 代码块是指令的集合,支持所有的DML,NDS,DBMS_SQL,DDL. :DML 是数据操纵语言(Data Manipulation Language)包括,I ...

  5. 【PL/SQL基础知识】结构

    1.pl/sql块的结构 declare --声明的变量.类型.游标 begin --程序的执行部分(类似于java的main()方法) exception --针对begin块中出现的异常 ---w ...

  6. pl/sql基础知识—触发器

    n  触发器简单介绍 触发器是指隐含执行的存储过程,它不是由程序员或者是DBA来显式调用,而是因为某个操作引发执行的.当定义触发器时,必须要指定触法的事件和触发的操作,常用的触发事件包括insert, ...

  7. pl/sql基础知识—过程快速入门

    n  过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数可以将执行部分的数据传递 ...

  8. pl/sql基础知识—函数快速入门

    n  函数 函数用于返回特定的数据,当建立函数式,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据,我们可以使用create function来建立函数,实际案例: ...

  9. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

随机推荐

  1. [转]Sql Server Alter语句

    原文链接:http://www.cnblogs.com/yoolonet/archive/2010/12/10/1884782.html 在修改Sql Server表结构时,常用到Alter语句,把一 ...

  2. Size Balanced Tree(节点大小平衡树)

    定义 SBT也是一种自平衡二叉查找树,它的平衡原理是每棵树的大小不小于其兄弟树的子树的大小 即size(x->l)$\ge$size(x->r->l),size(x->r-&g ...

  3. java时间戳和PHP时间戳的转换问题

    由于精度不同,导致长度不一致,直接转换错误.  JAVA时间戳长度是13位,PHP时间戳长度是10位.主要最后三位的不同. 方法,截取前10位,substr($time,0,10);

  4. hdu4565

    #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #inc ...

  5. 从零开始Android逆向教程(二)——什么是Xposed

    前言在阅读本文之前,假设你的手机已经root,并且已经成功安装好了 XposedInstaller. Xposed是什么?       Xposed 是一个 Android 平台上的动态劫持框架,通过 ...

  6. 2016中国人工智能企业TOP100, CBinsight2016年100家人工智能公司

    2016中国人工智能企业TOP100 不论在学界还是业界,均有代表人物对人工智能表示了担忧,如史蒂芬·霍金和比尔·盖茨.尽管如此,国内外科技巨头都积极发力人工智能,一波波创业者也相继涌入.人工智能成为 ...

  7. 手残,盘符前边多打一个空格导致的message d:\WEB_APP_QuChongFu\file\五月.xlsx (文件名、目录名或卷标语法不正确。)

    尝试读取并解析一个excel文件,一直提示错误 但是有个原始数据,导入就没问题 对比了一下,好像也就是字母d的大小写有区别 我先把大写的D改成小写的试试,如果是大小写问题,那应该抛出异常 好吧,好像并 ...

  8. spring springmvc 展示图片,静态资源的处理

    jsp中显示一张照片 <img alt="静态图片" src="static/目录.png"> 然后在springmvc的配置中加上 <!-- ...

  9. flask的基本操作

    常用的SQLAlchemy字段类型 # coding:utf-8 from flask import Flask from flask_sqlalchemy import SQLAlchemy app ...

  10. CentOS 7 yum 安装与配置MySQL5.7

    1.下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2.安装mysql源 yu ...