• Oracle package demo 包


    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 的变量

  • 相关阅读:
    watir-webdriver使用过程中异常
    分治算法
    回溯算法
    线性时间求取第 K 大数
    深度和广度优先搜索算法
    排序优化——模拟栈及三路快排
    排序算法之——归并排序和快速排序
    数据结构和算法之——算法复杂度分析
    LeetCode 10——正则表达式匹配
    线性代数之——复数矩阵
  • 原文地址:https://www.cnblogs.com/jycjy/p/11713299.html
Copyright © 2020-2023  润新知