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();
----这是我个人在写程序包过程中的一些见解,希望能够帮助到你。水平有限,欢迎指正。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库