oracle 嵌套表
--自定义对象
CREATE OR REPLACE TYPE Fas_checksheetinfo_line_obj AS OBJECT
(
CSID_ID VARCHAR2(32),--报账单明细ID
CSI_ID VARCHAR2(32),--报账单ID
CSID_GENERATEDATE DATE, --费用发生日期
CSID_TYPE VARCHAR2(32),--费用类型
CSID_SUMMARY VARCHAR2(256),--费用摘要
CSID_CURRENCY VARCHAR2(32),--币种
CSID_VALUE NUMBER, --费用发生金额
CREATEDBY VARCHAR2(32),--生成人
CREATEDDATE DATE, --生成日期
LASTUPDATEDBY VARCHAR2(32),--最后更改人
LASTUPDATEDDATE DATE, --最后更改日期
FLAG VARCHAR2(32),--删除标识
CSID_SEQ NUMBER --序号
)
自定义 table object
CREATE OR REPLACE TYPE Fas_checksheetinfo_line_tab AS TABLE OF Fas_checksheetinfo_line_obj;
pck
PROCEDURE checksheet_import(P_CSI_ID IN VARCHAR2, --报账单ID
P_CSI_CODE IN VARCHAR2, --报账单编号
P_RI_ID IN VARCHAR2, --凭证ID
P_CSI_VALUE IN NUMBER, --报账单金额
P_CSI_ORG IN VARCHAR2, --报账单位
P_CREATEDBY IN VARCHAR2, --生成人
P_CREATEDDATE IN DATE, --生成日期
P_LASTUPDATEDBY IN VARCHAR2, --最后更改人
P_LASTUPDATEDDATE IN DATE, --最后更改日期
P_FLAG2 IN VARCHAR2, --删除标识
P_CSI_TYPE IN VARCHAR2, --报账单类型
P_CSI_DEST IN VARCHAR2, --目的地
P_CSI_GENERATEDATE IN DATE, --费用发生年月
P_CSI_COSTCENTER IN VARCHAR2, --成本中心
P_CSI_SUMMARY IN VARCHAR2, --摘要
P_CSI_PDFDIR IN VARCHAR2, --pdf地址
P_GI_PDFDIR IN VARCHAR2, --影像列表pdf地址
p_checksheetinfo_line_tab IN Fas_checksheetinfo_line_tab, --行信息,嵌套表
----------------输出结果---------------------------
p_flag OUT NUMBER,
p_msg OUT VARCHAR2) is
v_cheksheet ei_checksheetinfo%ROWTYPE;
v_cheksheet_line ei_checksheetinfo_detail%ROWTYPE;
v_line_count number;
begin
null;
p_flag := 0;
p_msg := 'success';
--插入报账单头信息表
insert into ei_checksheetinfo
(CSI_ID,
CSI_CODE,
RI_ID,
CSI_VALUE,
CSI_ORG,
CREATEDBY,
CREATEDDATE,
LASTUPDATEDBY,
LASTUPDATEDDATE,
FLAG,
CSI_TYPE,
CSI_DEST,
CSI_GENERATEDATE,
CSI_COSTCENTER,
CSI_SUMMARY,
CSI_PDFDIR,
GI_PDFDIR)
values
(P_CSI_ID,
P_CSI_CODE,
P_RI_ID,
P_CSI_VALUE,
P_CSI_ORG,
P_CREATEDBY,
P_CREATEDDATE,
P_LASTUPDATEDBY,
P_LASTUPDATEDDATE,
P_FLAG,
P_CSI_TYPE,
P_CSI_DEST,
P_CSI_GENERATEDATE,
P_CSI_COSTCENTER,
P_CSI_SUMMARY,
P_CSI_PDFDIR,
P_GI_PDFDIR);
--插入行信息数据
v_line_count := p_checksheetinfo_line_tab.COUNT;
FOR i IN 1 .. v_line_count LOOP
--p_line_errmsg(i).line_number := v_invoice_line_info_arr(i).line_number;
insert into EI_CHECKSHEETINFO_DETAIL
(CSID_ID,
CSI_ID,
CSID_GENERATEDATE,
CSID_TYPE,
CSID_SUMMARY,
CSID_CURRENCY,
CSID_VALUE,
CREATEDBY,
CREATEDDATE,
LASTUPDATEDBY,
LASTUPDATEDDATE,
FLAG,
CSID_SEQ)
values
(p_checksheetinfo_line_tab(i).CSID_ID,
p_checksheetinfo_line_tab(i).CSI_ID,
p_checksheetinfo_line_tab(i).CSID_GENERATEDATE,
p_checksheetinfo_line_tab(i).CSID_TYPE,
p_checksheetinfo_line_tab(i).CSID_SUMMARY,
p_checksheetinfo_line_tab(i).CSID_CURRENCY,
p_checksheetinfo_line_tab(i).CSID_VALUE,
p_checksheetinfo_line_tab(i).CREATEDBY,
p_checksheetinfo_line_tab(i).CREATEDDATE,
p_checksheetinfo_line_tab(i).LASTUPDATEDBY,
p_checksheetinfo_line_tab(i).LASTUPDATEDDATE,
p_checksheetinfo_line_tab(i).FLAG,
p_checksheetinfo_line_tab(i).CSID_SEQ);
END LOOP;
commit;
EXCEPTION
WHEN OTHERS THEN
p_flag := 101;
p_msg := SQLERRM;
end checksheet_import;
测试脚本
declare
checksheetinfo_line_tab Fas_checksheetinfo_line_tab;
p_flag number;
p_msg varchar2(200);
begin
--插入主表
--插入行表
checksheetinfo_line_tab := Fas_checksheetinfo_line_tab();
checksheetinfo_line_tab.extend;
checksheetinfo_line_tab(1) := Fas_checksheetinfo_line_obj(CSID_ID => 11,
CSI_ID => 1,
CSID_GENERATEDATE => sysdate,
CSID_TYPE => 11,
CSID_SUMMARY => 11,
CSID_CURRENCY => 11,
CSID_VALUE => 11,
CREATEDBY => 11,
CREATEDDATE => sysdate,
LASTUPDATEDBY => 11,
LASTUPDATEDDATE => sysdate,
FLAG => 11,
CSID_SEQ => 11);
--调用过程
fas_checksheet_pkg.checksheet_import(1,
1,
1,
1,
1,
1,
sysdate,
1,
sysdate,
1,
1,
1,
sysdate,
1,
1,
1,
1,
checksheetinfo_line_tab,
p_flag,
p_msg);
--打印调用结果
dbms_output.put_line('p_flag:' || p_flag || ',p_msg:' || p_msg);
end;
oracle 嵌套表的更多相关文章
- Oracle嵌套表
一.介绍 1.定义 嵌套表是表中之表.一个嵌套表是某些行的集合,它在主表中表示为其中的一列.对主表中的每一条记录,嵌套表可以包含多个行.在某种意义上,它是在一个表中存储一对多关系的一种方法. ...
- (转)oracle嵌套表示例
本文转载自:http://www.cnblogs.com/gisdream/archive/2012/04/13/2445291.html ----嵌套表:就是把一个表中的字段定义为一个表,这个字段表 ...
- oracle ibatis 存储过程 返回游标 嵌套表
自己解决问题了 问题总结: 1.index by表不能存储在数据库中的type中,故选择嵌套表. 2.ibatis不支持oracle的复合数据类型的返回.(个人理解) 3.替代方案:用返回oracle ...
- oracle:变长数组varray,嵌套表,集合
创建变长数组类型 ) ); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE ...
- oracle 之 数组、嵌套表、SQL查询式 实现多表数据for循环插入指定表
1.基础环境 创建基础表: CREATE TABLE TEST_TAB1( ID INT, NAME VARCHAR2(20) ); CREATE TABLE TEST_TAB2( ID INT, N ...
- PL/SQL 嵌套表变长数组和索引表[转]
关于PL/SQL中这三种数组的介绍,不想写了.转一篇日志吧…… 链接:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html ...
- Oracle的表连接方式
Oracle的表连接方式: 1.Nl Join连接(嵌套连接) 2.Hash Join(哈希连接) 3.Merge Sort Join(排序合并连接) 各种连接的使用场景: 1. 排序合并连接是偏向于 ...
- Oracle多表的简单查询
Oracle多表的简单查询 .多表查询 多表查询是指基于两个和两个以上的表或是视图的查询. 问题:显示雇员名,雇员工资及所在部门的名字[笛卡尔集]? select t.ename,t.sal,t1.d ...
- 嵌套表用法详解(PLSQL)
嵌套表 嵌套表是一种类似于索引表的结构,也可以用于保存多个数据,而且也可以保存复合类型的数据 嵌套表指的是一个数据表定义事同时加入了其他内部表的定义,这一概念是在oracle 8中引入的,它们可以使用 ...
随机推荐
- 电赛菜鸟营培训(五)——OLED屏幕的使用
一.取模软件的使用 首先进行设置 然后可以生成显示这个字母的代码,列优先,先按列画8行,然后再继续画下一列.汉字为16*16,字母为8*8,对应生成相应个数的ox代码. 二.STM32烤写OLED # ...
- SVN学习安装总结
前言: 第一次接触SVN的时候并不是自己学习SVN的时候,而是再看师哥师姐做项目的时候,看着他们打开SVN向上传东西的时候,我就在想,这是个什么东西,需要每个人都安装吗?大胆的我也就问了 ...
- CDH中HDFS的WEB UI外网无法访问的问题
文章来自:http://www.cnblogs.com/hark0623/p/4177794.html 转载请注明 其实问题很简单,因为在CDH中hdfs-site.xml配置文件中WEB UI配置的 ...
- Playmaker Input篇教程之引入的核心概念
Playmaker Input篇教程之引入的核心概念 Playmaker Input引入的核心概念 Playmaker引入了4个核心概念:状态机.动作.变量和事件.了解它们是学习操作Playmaker ...
- 移动开单软件 手持PDA开单扫描打印系统开发介绍
具体功能预览--(图示) PDA开单打印扫描采集器主程序: ▲门店使用:接单员销售开单.销售退货或查询相关资料. ▲仓库使用:PDA仓库验收货.发货.仓库盘点 ▲在外业务开单:业务在外面开销售单.销售 ...
- ubuntu 重置密码
背景:在登陆ubuntu之后,按Ctr+Alt+F1进入控制台时,需要登陆,一时忘了密码... 参考:http://www.cnblogs.com/relaxgirl/p/3179507.html ...
- Half Sync And Half Async 半同步半异步模式
如题,这是一个典型的CS结构的模式,至少曾经在CS结构中用过,只是没用好.当年用UDP死活都处理不过来网络命令,用此模式轻松解决. 此模式是典型的三层架构,同步层在一个线程内处理业务逻辑:异步层接受并 ...
- POJ3162 Walking Race(树形DP+尺取法+单调队列)
题目大概是给一棵n个结点边带权的树,记结点i到其他结点最远距离为d[i],问d数组构成的这个序列中满足其中最大值与最小值的差不超过m的连续子序列最长是多长. 各个结点到其他结点的最远距离可以用树形DP ...
- Real Adaboost总结
Real Adaboost分类器是对经典Adaboost分类器的扩展和提升,经典Adaboost分类器的每个弱分类器仅输出{1,0}或{+1,-1},分类能力较弱,Real Adaboost的每个弱分 ...
- Guaranteeing message processing —— 可靠的消息处理
Storm's reliability API: how Storm guarantees that every message coming off a spout will be fully pr ...