Oracle程序包——简单实例

一、程序包里可以写存储过程和函数,然后调用程序包就可以了

 

二、程序包大体简介:

  1.程序包里面一般写比较复杂的逻辑,一般写在存储过程和函数里面。

  2.函数一般是用来返回值的(如:select语句);存储过程是执行crud等一系列操作的,我不期望有返回值

  3.返回类型:管道类型

 

三、程序包组成

  1.包头:声明包,定义函数或者存储过程;

create or replace PACKAGE packagename IS
  FUNCTION get_data1 RETURN f1_data1 PIPELINED; 
  FUNCTION get_data2 RETURN f2_data2 PIPELINED;
END packagename;

  2.类型:是返回的字段的集合,下列是f1_data1和f2_data2的类型定义

create or replace TYPE  col AS OBJECT (
"name" NUMBER(16),
"age" NVARCHAR2(300)
);
create or replace TYPE f1_data1 AS TABLE OF col;


create or replace TYPE  col2 AS OBJECT (
"name" NUMBER(16)
);
create or replace TYPE f2_data2 AS TABLE OF col2;

   3.包体:

create or replace PACKAGE BODY packagename IS
  FUNCTION get_data1 RETURN f1_data1 PIPELINED IS
  BEGIN
       FOR rec IN (
        select "name","age" from "user"
                )
LOOP
      PIPE ROW(col(rec."name",rec."age"));
    END LOOP;
    RETURN;
  END get_data1; 


    FUNCTION get_data2 RETURN f2_data2 PIPELINED IS
  BEGIN
       FOR rec IN (
         select "name" from "user"
                )
LOOP
      PIPE ROW(col2(rec."name"));
    END LOOP;
    RETURN;
  END get_data2; 

END ;

   4.调用,差不多是下面这样子

packagename.get_data1();

 

----这是我个人在写程序包过程中的一些见解,希望能够帮助到你。水平有限,欢迎指正。

posted @   ikun、  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示