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();
----这是我个人在写程序包过程中的一些见解,希望能够帮助到你。水平有限,欢迎指正。

浙公网安备 33010602011771号