oracle - Oracle 11g:如何生成会计科目表中的数字
问题描述
在 oracle 11g(SQL 或 PL/SQL)中,对于会计科目表,我想生成如下数字:从 2 级开始:(1 级 a/c 编号为 1、2、3、4、5)
如果它在头1中是资产,那么它将生成第一个数字为101 如果它在头2中是负债,那么它将生成第一个数字为201
3级;
如果选择父级101那么它将生成第一个 a/c 编号为10101 如果选择父级102那么它将生成第一个 a/c 编号为10201
等等....
第 4 级:
如果选择父级 10101那么它将生成 First a/c number 为10101001 如果选择父级10201那么它将生成 First a/c number 为10201001
等等...
和所有其他总账户相同(2=负债,3=费用,4=收入 5=资本)
请帮忙。
解决方案
非常感谢EJ Egyed有兴趣提供帮助,我在下面编写了对我来说很好的函数。
create or replace function get_value_no( v_value_level in number,
v_value_abbreviation in varchar2,
v_value_parent in number)
return number is
--
-- create trigger or function, in case of function pass following columns as parameters
-- value_leve, value_abbreviation, value_parent_acct
v_value_level number := 3;
v_value_abbreviation char(1) := 'L'; -- (A)sset (L)iability (E)xpense (R)evenue (C)apital
v_valno number;
v_parent number := 203; -- parent account which user will select
v_char varchar2(20);
begin
-- ======================
if v_value_level in (2, 3) then
select max(nvl(value_no,0))
into v_valno
from value_set
where value_level = v_value_level
and value_abbreviation = v_value_abbreviation
and value_type = 'NA'
and value_parent_acct = v_value_parent;
if v_valno is null or v_valno <= 0 then
v_char := to_char(v_value_parent)||'01';
v_valno := v_char;
else
v_valno := v_valno+1;
end if;
end if;
-- ======================
if v_value_level = 4 then
select max(nvl(value_no,0))
into v_valno
from value_set
where value_level = v_value_level
and value_abbreviation = v_value_abbreviation
and value_type = 'NA'
and value_parent_acct = v_value_parent;
if v_valno is null or v_valno <= 0 then
v_char := to_char(v_value_parent)||'001';
v_valno := v_char;
else
v_valno := v_valno+1;
end if;
end if;
-- ======================
return v_valno;
--
end;
推荐阅读
- python - 为什么终端为我提供此 .py 脚本的零结果?
- reactjs - 使用子组件中的异步请求更新父组件状态
- node.js - 部署到 Heroku:环境变量未定义
- python - 如何调用square API创建卡或如何使用卡信息收费?
- bash - Bash脚本在一段时间内有效,但在直到?
- c++ - C++ 类抽象坐标
- java - 如何在 IJ-OpenCV 库中将图像转换为 CV_32F 类型
- python - 如何使用 docker python sdk 运行 docker compose
- python - 使用 numpy/python 从点列表计算最小距离的更快方法
- javascript - 单击后如何更改心形按钮的颜色?