CREATE OR REPLACE PACKAGE BODY icas_insert_line_pkg IS
-- Function and procedure implementations
FUNCTION f_get_currency(iv_company_code IN VARCHAR2) RETURN VARCHAR2 IS
v_func_currency VARCHAR2(15) := '-1'; --中间币种--
BEGIN
--先查出中间币种--
SELECT t.functional_currency_code
INTO v_func_currency
FROM icas_base_company_t t
WHERE t.company_code = iv_company_code
AND rownum = 1;
RETURN v_func_currency;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('no_data_found');
RETURN v_func_currency;
WHEN OTHERS THEN
dbms_output.put_line('others exception');
RETURN v_func_currency;
END;
-- Insert table for all business
PROCEDURE p_insert_table(iv_insert_rec IN tp_insert_line_rec) IS
tab_rec pls_integer := 0;
BEGIN
INSERT INTO icas_selected_lines_t
(icas_selected_lines_t_id,
transactionflow_id,
transaction_id,
ap_company_code,
ap_ic_code,
.....)
VALUES
(iv_insert_rec.icas_selected_lines_t_id,
iv_insert_rec.transactionflow_id,
iv_insert_rec.transaction_id,
iv_insert_rec.ap_company_code,
iv_insert_rec.ap_ic_code,
......)
end;
FUNCTION f_inst_ap(in_to_money IN NUMBER, --结算金额--
iv_to_currency IN VARCHAR2, --结算币种--
in_transaction_id IN NUMBER, --资金调拨、债权债务互抵号--
in_transactionflow_id IN NUMBER, --电子流号--
iv_ratetype IN VARCHAR2, --汇率类型--
iv_ratedate IN VARCHAR2, --汇率日期--
iv_company_code IN VARCHAR2, --公司段--
iv_ic_code IN VARCHAR2, --IC段--
iv_business_type IN VARCHAR2 --业务类别--
) RETURN BOOLEAN IS
v_func_currency VARCHAR2(15) := f_get_currency(iv_company_code);
to_currency_rate NUMBER := icas_get_rate_func(iv_to_currency,
v_func_currency,
iv_ratedate,
iv_ratetype);
dt_date date := sysdate;
CURSOR cur_account_not_one IS
SELECT icas_selected_lines_t_ID_S.Nextval,
in_transactionflow_id,
in_transaction_id,
AP_COMPANY_CODE,
AP_IC_CODE,
......
from ...
where ...;
BEGIN
OPEN cur_account_not_one;
LOOP
FETCH cur_account_not_one BULK COLLECT INTO tp_inst_line_arry;
--dbms_output.put_line('ap number: ' || tp_inst_line_arry.count);
FOR i IN 1 .. tp_inst_line_arry.COUNT LOOP
p_insert_table(tp_inst_line_arry(i));
END LOOP;
EXIT WHEN cur_account_not_one%NOTFOUND;
END LOOP;
CLOSE cur_account_not_one;
tp_inst_line_arry.DELETE;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END f_inst_ap;
定义数据类型
TYPE tp_insert_line_rec IS RECORD(
icas_selected_lines_t_id icas_selected_lines_t.icas_selected_lines_t_id%TYPE,
transactionflow_id icas_selected_lines_t.transactionflow_id%TYPE,
transaction_id icas_selected_lines_t.transaction_id%TYPE,
ap_company_code icas_selected_lines_t.ap_company_code%TYPE,
ap_ic_code icas_selected_lines_t.ap_ic_code%TYPE,
....)
TYPE tp_insert_line_tab IS TABLE OF tp_insert_line_rec INDEX BY BINARY_INTEGER;
-- Public variable declarations
tp_inst_line_arry tp_insert_line_tab;
分享到:
相关推荐
SocanCode是一款工具,专为开发者设计,用于自动生成存储过程,并且能够根据数据库中的数据和预定义的模板生成C#代码。这个工具的主要目标是提高开发效率,减少重复劳动,让程序员可以把更多精力集中在核心业务逻辑...
根据给定的信息,我们可以深入探讨PHP与MySQL存储过程的相关知识点,包括如何在MySQL中使用`CONCAT`函数、创建存储过程以及如何通过PHP脚本来调用这些存储过程。 ### 使用 CONCAT 函数 #### 标题中的示例 ```sql ...
总之,DB2编程基础要点包括存储过程的创建、临时表的使用、指定数量记录的选取、游标的管理和事务控制,以及模拟`DECODE`函数的操作。掌握这些要点有助于编写高效、可靠的DB2应用程序。在实际工作中,了解并熟练应用...
### 存储过程通用分页Procedure详解 #### 标题:存储过程通用分页Procedure 此标题明确指出了本文档的主要内容是关于一种通用的存储过程实现方式,用于数据库中的分页查询。分页是在数据库操作中非常常见的一种...
这个存储过程接收六个参数:`@TableNames`(同上)、`@PrimaryKey`(主键列名)、`@Fields`(要选取的字段)、`@PageSize`(每页记录数)、`@CurrentPage`(当前页数)、`@Filter`(查询条件)以及`@Group`(分组...
在数据库管理中,存储过程和触发器是两个重要的概念,它们在数据库设计和数据库原理中占据着核心地位。本文将详细解析这些例子,以便更好地理解它们的用途和操作方式。 首先,存储过程是一组预编译的SQL语句,可以...
添加新分类时,可以通过存储过程创建新的节点,并自动维护其与父节点的关系。删除分类时,可能需要递归处理以删除所有子分类。修改分类包括更改名称、属性等,而排序则涉及调整节点在树中的位置。栏目备注为每个分类...
在Oracle数据库系统中,触发器和存储过程是两种强大的数据库对象,它们允许开发人员执行复杂的业务逻辑和数据处理。在“Oracle触发器与存储过程高级编程”中,我们将深入探讨这两个概念以及相关的高级特性。 首先,...
根据给定文件的信息,我们可以总结出以下几个重要的知识点:...这些内容不仅包含了数据库表的设计与创建,还包括了随机数据生成函数的实现以及用于批量插入数据的存储过程,为进行数据库压力测试提供了完整的解决方案。
总结来说,游标用于动态处理查询结果,存储过程封装重复使用的SQL代码和业务逻辑,而触发器则在特定事件发生时自动执行操作,这三者共同构成了Oracle数据库程序设计的基础。熟练掌握这些概念,能够帮助开发者更高效...
在`oh_qty`存储过程中,`oh_cur`是游标,它从`inv`表中选取数据,并将每行的值分别赋给声明的变量。 4. **触发器**:触发器是数据库自动执行的预定义操作,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE)。...
通过以上介绍,我们可以看到这些技术分别解决了Web开发中的不同问题:Session帮助管理用户会话状态,ViewState用于保存页面状态信息,jQuery简化了前端开发,而SQL存储过程则提高了后端的执行效率和安全性。...
1. **存储过程**:存储过程是预编译的SQL语句集合,可以在数据库中预先定义并存储,当需要执行时调用,减少了网络传输和解析的时间,提高性能。 2. **参数化查询**:存储过程接受多个输入参数,如表名、主键、字段...
例如,下面这个简单的存储过程`selectall`用于选取`studentinf`表中的所有数据: ```sql CREATE PROC selectall AS SELECT * FROM studentinf ``` 在.NET中,我们通常使用ADO.NET组件来与数据库进行交互。要调用这...
在Windows操作系统中,用户登录过程可以通过系统启动时执行特定的程序来模拟。当系统启动时,如果有一个程序能够预先设定好用户的账户和密码,然后模拟用户登录操作,那么系统就能自动完成登录步骤,无需人工干预。 ...
选取过程中,通常遵循以下几个步骤: 1. **分段获取特征码**: - 获取病毒程序的总长度,并将其分割成若干段,段的数量根据程序的大小而定,通常为3至5段,或者更多。 - 分段获取特征码可以提高检测的准确率,...
Oracle数据库中的存储过程和触发器是数据库编程的重要组成部分,它们被广泛用于数据处理、业务逻辑控制以及自动化数据复制。在本场景中,我们探讨的是如何使用存储过程来复制数据,特别是涉及ICP(互联网内容提供商...
在给定的存储过程代码中,我们看到了一个用于实现分页查询的示例,该存储过程名为`Page`,主要用于SQL Server数据库系统。以下是关于这个存储过程的详细解释: 1. **参数解析**: - `@currentPage`:当前请求的...
总结来说,易语言魔术棒选取算法源码是用于在图像处理软件中实现快速选择颜色相似像素的工具,通过一系列栈操作和颜色比较,实现自动选取颜色区域的功能。开发者可以依据这些核心函数,结合易语言的特点,构建出用户...