zoukankan      html  css  js  c++  java
  • Oracle基础<4>--程序包

    一:程序包定义(包括1.程序包规范 2.程序包主体)

      程序包是一种数据库对象,它是对相关pl/sql 类型、子程序、游标、异常、变量和常量的封装。

      1、程序包规范:可以声明类型、变量、常量、异常、游标和子程序。

      2、程序包主体:可以实现在程序包规范中定义的游标、子程序。

    二:程序包规范

      程序包规范包含一些应用程序课件的公共对象和类型的声明它是应用程序的借口。规范包含应用程序所需的资源,如果程序包规范只声明类型、常量、变量和异常,则不需要有程序包主体。只有子程序和游标才具有程序包主体。

      语法:

      creat [or replace] package package_name --包名称

      [is | as]

      [public type and item declations]    --声明公共类型、常量、变量、异常和游标等

      [subprogram specifications]   --声明pl/sql子程序,也就是存储过程和和函数

      end [package_name];


    --程序包规范的声明
    CREATE OR REPLACE PACKAGE PACKAGE_ME IS
      PROCEDURE PRO_EMP_SELECT(ENO NUMBER); --声明一个存储过程:根据员工编号查询员工信息
      FUNCTION FUN_EMP_SELECT(ENO NUMBER) RETURN NUMBER; --声明一个函数,根据员工编号查询员工工资。
    END PACKAGE_ME;


    三:程序包主体

      语法:

      create [or replace] package body package_name

      is|as    

        [public type and item declarations]--声明变量、常量、游标、异常或类型

        [subprogram bodies]                    --定义公共和私有PL/SQL子程序。

      [begin

        initialization_statements]     --程序包中规范代码的实现。

      end [package_name];


    --创建程序包主体,提供程序包内容的实现,和存储过程、函数的声明一致
    CREATE OR REPLACE PACKAGE BODY PACKAGE_ME IS
      PROCEDURE PRO_EMP_SELECT(ENO NUMBER) AS
        V_NAME EMP.ENAME%TYPE;
        V_SAL  EMP.SAL%TYPE;
      BEGIN
        SELECT ENAME, SAL INTO V_NAME, V_SAL FROM EMP WHERE EMPNO = ENO;
        DBMS_OUTPUT.PUT_LINE('name:' || V_NAME || '   sal:' || V_SAL);
      END PRO_EMP_SELECT;

      FUNCTION FUN_EMP_SELECT(ENO NUMBER) RETURN NUMBER AS
        V_SAL EMP.SAL%TYPE;
      BEGIN
        SELECT SAL INTO V_SAL FROM EMP WHERE EMPNO = ENO;
        RETURN V_SAL;
      END FUN_EMP_SELECT;
    END PACKAGE_ME;


    四、调用程序包 


    DECLARE
      v_sal emp.sal%TYPE;
    BEGIN
        package_me.PRO_EMP_SELECT(7788);                --调用方式和调用存储过程方式一样,不过需要在存储过程前添加程序包名
        v_sal := package_me.FUN_EMP_SELECT(7788);       --调用方式和调用函数方式一样,不过需要在函数前添加程序包名
        dbms_output.put_line(v_sal);
    END;

    
    
    
  • 相关阅读:
    安装pip
    Jmeter查看吞吐量
    maven打包为jar文件时,解决scope为system的jar包无法被打包进jar文件的解决方案。
    spring cloud unavailable-replicas
    IDEA实用插件
    spring-mvc项目整合jetty实现单war包自启动webapp
    集成多数据源支持和REDIS后只有一个配置能起作用的处理。
    spring整合redis缓存,以注解(@Cacheable、@CachePut、@CacheEvict)形式使用
    基于spring的aop实现多数据源动态切换
    安装Oracle11gR2先决条件检查失败的详细解决处理过程
  • 原文地址:https://www.cnblogs.com/futao123/p/4470234.html
Copyright © 2011-2022 走看看