1.package 程序包说明(由函数、过程、变量、常量、游标和异常组成)

create or replace package pk_test is

  -- Author  : CHEN
-- Created : 2019/10/21 11:34:30
-- Purpose : package test -- Public constant declarations
--<ConstantName> constant <Datatype> := <Value>;
words varchar2(100) := 'To be a better man!';
-- Public variable declarations
--<VariableName> <Datatype>;
v_count varchar2(100); -- Public function and procedure declarations
--function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;
function f_get_money(v_salary number, v_month number) return number;
procedure p_insertnumbers(nums in integer); end pk_test;

 

注意:可以将对象名加到END子句,这样会使在代码中逻辑关系更加清楚。 

2.package body 程序包体(程序包体包含了程序包说明中列出的所有公有对象的代码块和说明。程序包体还可以包括没有在程序包说明中列出的对象,这些对象被称为私有对象,私有对象只能由统一程序包体中的其他对象使用)

程序包体的名称应该与程序包说明的名称相同。

create or replace package body pk_test is

  -- Private type declarations
--type <TypeName> is <Datatype>; -- Private constant declarations
--<ConstantName> constant <Datatype> := <Value>; -- Private variable declarations
-- <VariableName> <Datatype>;
-- Function and procedure implementations
function f_get_money(v_salary number, v_month number) return number is
-- <LocalVariable> <Datatype>;
begin
--<Statement>;
return v_salary * v_month;
end;
procedure p_insertnumbers(nums in integer) is
nums_a integer(5) := nums;
begin
LOOP
insert into t3 values ('test', sysdate);
    commit;
nums_a := (nums_a - 1);
exit when nums_a < 1;
end loop;
end p_insertnumbers;
end pk_test;

准备:

create table T3
(
ACTION VARCHAR2(100),
A_TIME TIMESTAMP(6)
)

  

调用:

truncate table  t3;
select * from t3;
select pk_test.f_get_money(1000,12) from dual;
call pk_test.p_insertnumbers(5);
select * from t3;

 结果:

        

注意:PLS-00363: expression 'nums' cannot be used as an assignment target

    oracle中不能为in型的变量赋值,所以需要建一个变量,让它等于in 的变量

Oracle package demo 包的更多相关文章

  1. C#/java 执行oracle package

    使用pl/sql创建package CREATE OR REPLACE PACKAGE FirstPage is type outlist is ref cursor; Procedure p_get ...

  2. 使用Oracle的DBMS_SQL包执行动态SQL语句

    引用自:http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx 在某些场合下,存储过程或触发器里的SQL语句需要动态生成.Oracle ...

  3. ORACLE之UTL_FILE包详解

    1 Utl_File包简介Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作.(1)Oracle10g之前的版本需要指定utl_file包可以操作的目录.      方法:        ...

  4. Oracle数据库程序包全局变量的应用

    1 前言  在程序实现过程中,经常用遇到一些全局变量或常数.在程序开发过程中,往往会将该变量或常数存储于临时表或前台程序的全局变量中,由此带来运行效率降低<频繁读取临时表>或安全隐患< ...

  5. Oracle DBA管理包脚本系列(二)

    该系列脚本结合日常工作,方便DBA做数据管理.迁移.同步等功能,以下为该系列的脚本,按照功能划分不同的包.功能有如下: 1)数据库对象管理(添加.修改.删除.禁用/启用.编译.去重复.闪回.文件读写. ...

  6. Oracle Package的全局变量与Session

    Oracle Package的全局变量与Session2012-07-26 aaie_ 阅 3595 转 10简单讲,同一个session下pageckage中的全局变量时公共的,会导致冲突.以下是一 ...

  7. oracle存储过程学习---包的概念

    转自:http://www.iteye.com/topic/1111793 一.包的概念   类似于一个容器,能打包相应的Pl/SQL变量.常量.函数.过程.复合数据类型等元素到这个容器内.用来限制  ...

  8. package.json包描述文件说明

    //commonjs包规范-说明 { "name": "leyi",//包名,不允许空格 "description": "hell ...

  9. ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)

    ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python) 时隔1年,再回来总结这个问题,因为它是ros+python开发中,太常用的一个操作,需要 ...

随机推荐

  1. Linux Shell中捕获CTRL+C

    #!/bin/bash trap 'onCtrlC' INTfunction onCtrlC () { echo 'Ctrl+C is captured'} while true; do echo ' ...

  2. Android操作系统中11种传感器的介绍【转】

    本文转载自:http://www.oschina.net/question/163910_28354 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用. ...

  3. First-order logic

    w https://en.wikipedia.org/wiki/First-order_logic

  4. 十八、浏览器不能打开jenkins报告,报错Opening Robot Framework report failed

    解决方案一:(推荐) 打开jenkins----系统管理---输入:  System.setProperty("hudson.model.DirectoryBrowserSupport.CS ...

  5. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_5_端口号

  6. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第4节 ArrayList集合_13-ArrayList集合概述和基本使用

    新建类 多了个尖括号,大写字母E,这是什么意思呢? 尖括号当中叫做泛型.存储的统一的类型,这个类型就在尖括号里面写上,我们用一个字母占位表示. 如何创建呢 构造方法有三个,最常用的就是无参构造 先掌握 ...

  7. 《图解设计模式》读书笔记5-2 decorator模式

    目录 代码演示 模式的角色和类图 思路拓展 Decorator模式即装饰器模式,就是对类进行装饰,下面通过代码说明. 代码演示 代码展示的内容 有一个类StringDisplay:表示一句话,比如he ...

  8. json模块:字符串与字典之间的转换--loads,dumps,load,dump

    一.json转化成字典: product.json文件:将该文件内容转换成python中字典,方法如下: 方法一:使用.loads(),先读后转换 import  json   #导入json, 注: ...

  9. MySQL-mysql 8.0.11安装教程 windows

    网上的教程有很多,基本上大同小异.但是安装软件有时就可能因为一个细节安装失败.我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的. 安装环境:win7 1.下载zip安装包: MySQL ...

  10. 应用安全 - SuiteCRM - 漏洞汇总

    CVE-2019-12598.CVE-2019-12601 SuiteCRM SQL注入与远程代码执行漏洞 SalesAgility SuiteCRM .x版本..x版本和7..5之前的7..x版本中 ...