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. RabbitMQ幂等性概念(七)

    幂等性是什么? 我们可以借鉴数据库的乐观锁机制 比如我们执行一条更新库存的sql语句update user set count=count-1,version=version+1 where vers ...

  2. [CSP-S模拟测试]:炼金术士的疑惑(模拟+数学+高斯消元)

    题目传送门(内部题70) 输入格式 第一行一个正整数$n$,表示炼金术士已知的热化学方程式数量.接下来$n$行,每行一个炼金术士已知的热化学方程式.最后一行一个炼金术士想要求解的热化学方程式,末尾记为 ...

  3. java配置环境变量 jdk1.8

    1.首先第一步安装JDK window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/j ...

  4. C++ Boost库的编译及使用

    https://www.jianshu.com/p/de1fda741beb https://www.cnblogs.com/weizhixiang/p/5804778.html Windows编译 ...

  5. Linux shell - ps,wc命令用法

    例1. 查看Oracle数据库活动进程LOCAL=NO,输出行数 oracle@sha> ps -ef|grep LOCAL=NO|wc -l 15 解释:ps -ef是查看所有的进程的 然后用 ...

  6. foreach(增强for循环)和for的区别

    https://www.cnblogs.com/XiaojianGo/p/7471860.html 首先说一下foreach有的也叫增强for循环,foreach其实是for循环的一个特殊简化版. 再 ...

  7. release,debug库互调用,32位,64位程序与库互调用

    以下是基于visual studio 2015和cmake的实验 1,debug或release的应用程序都可以调用release的库2,win32和x64的应用和库无法互调用,在VS中链接时会有一堆 ...

  8. CMakeLists.txt 语法

    命令不区分大小写(参数区分大小写) add_executable(demo main.cpp main.h main.rc) 用main.cpp源文件,main.h文件,main.rc文件构造可执行文 ...

  9. leetcode 720. 词典中最长的单词

    /* 1.hashtable 把每个字符串都放到hashtable中 a.排序 长度不同,长的放在前面,长度相同,字典序小的放在前面 b.不排序 遍历数组,对于每个字符串判断它的所有前缀是否都在has ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_8_字符串的分割方法

    使用空格分割 这个参数其实是个正则表达式 如果用英文的句号来切分就会有问题.. 没有输出任何东西 输出他的长度看下 数组的长度输出为0 注意事项: