获取组织机构代码,以'a','b'...形式返回
比如:若为211241003 返回: '211241003','211241','211200','210000'
211241 返回:'211241','211200','210000'
211200 返回:'211200','210000'
210000 返回:'210000'
CREATE OR REPLACE FUNCTION GET_PARENT_ORGCODE(in_code IN VARCHAR2)
RETURN VARCHAR2
deterministic
is
-- 返回值
orgcodelist VARCHAR2(128);
orgCode varchar2(20);
counter integer;
CURSOR cur_parentorg IS
select org_registry
from (select a.code, b.org_registry
from up_org_unit_ext b, up_org_unit a
where b.id = a.id
and length(a.code) != 6
union
select b.code, substr(b.code, 0, 4) || '00'
from up_org_unit b
where length(b.code) = 6
and substr(b.code, 5, 2) != 00
/*
select b.org_registry, substr(b.org_registry, 0, 4) || '00'
from up_org_unit_ext b
where length(b.org_registry) = 6
and substr(b.org_registry, 5, 2) != 00
*/
union
select b.org_registry, '210000'
from up_org_unit_ext b
where length(b.org_registry) = 6
and substr(b.org_registry, 5, 2) = '00'
) c
start with c.code = in_code
connect by nocycle prior c.org_registry = c.code;
BEGIN
counter := 0;
orgcodelist := '';
-- 打开游标
OPEN cur_parentorg;
LOOP
FETCH cur_parentorg
INTO orgcode;
EXIT WHEN cur_parentorg%NOTFOUND;
orgcodelist := orgcodelist || '''' || orgcode || ''',';
counter := counter + 1;
END LOOP;
CLOSE cur_parentorg;
if (counter = 2 and length(in_code) = 9) then
orgcodelist := '''' || in_code || ''',' || '''' ||
substr(in_code, 0, 6) || ''',' || orgcodelist;
else
orgcodelist := '''' || in_code || ''',' || orgcodelist;
end if;
orgcodelist := substr(orgcodelist, 0, length(orgcodelist) - 1);
return orgcodelist;
EXCEPTION
WHEN OTHERS THEN
return 'error';
END GET_PARENT_ORGCODE;
SQL调用
select * from t_reg_mcjbxxyw a where a.namestatu='01'
and instr(get_parent_orgcode('211241004'),a.accunit) > 0
and a.saveperto > sysdate;
Java 后台调用
public List<BusNamBasic> querXXXName(final BusNamBasic busNamBasic, final String flag, final String accUnit, final int pageNum, final int pageSize) {
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)throws HibernateException, SQLException {
List<Object> params = new ArrayList<Object>();
StringBuffer sql = new StringBuffer();
sql.append(" SELECT * FROM T_REG_MCJBXXYW WHERE NAMESTATU = '01' ");
if (StringUtils.isNotBlank(accUnit)) {
sql.append(" AND INSTR(GET_PARENT_ORGCODE(?),ACCUNIT) > 0 ");
params.add(accUnit);
}
if ("0".equals(flag) && StringUtils.isNotBlank(busNamBasic.getEntname())) {
sql.append(" AND ENTNAME = ? ");
params.add(busNamBasic.getEntname());
}
if ("1".equals(flag) && StringUtils.isNotBlank(busNamBasic.getEntname())) {
sql.append(" AND ENTNAME like ? ");
params.add("%" + busNamBasic.getEntname() + "%");
}
if (StringUtils.isNotBlank(busNamBasic.getNotno())) {
sql.append(" AND NOTNO = ? ");
params.add(busNamBasic.getNotno());
}
sql.append(" AND SAVEPERTO > SYSDATE ");
sql.append(" ORDER BY SAVEPERTO");
Query query = (SQLQuery) session.createSQLQuery(sql.toString())
.addScalar("mcjbxxywseq", Hibernate.LONG)
.addScalar("zcdjywseq", Hibernate.STRING)
.addScalar("pripid", Hibernate.STRING)
.addScalar("entname", Hibernate.STRING)
.addScalar("namedistrict", Hibernate.STRING)
.addScalar("apprdate", Hibernate.DATE)
.addScalar("alttime", Hibernate.INTEGER)
.setResultTransformer(Transformers.aliasToBean(BusNamBasic.class));
for (int i = 0; i < params.size(); i++) {
query.setParameter(i, params.get(i));
}
if(pageSize>0){
query.setMaxResults(pageSize);
query.setFirstResult((pageNum-1)*pageSize);
}
return query.list();
}
});
}
分享到:
相关推荐
Oracle数据库是世界上最流行的关系型数据库管理系统之一,它提供了丰富的编程元素来实现复杂的业务逻辑,如过程(PROCEDURE)和函数(FUNCTION)。在本教程中,我们将深入探讨如何在Oracle中创建、调用以及删除这两...
在描述中提到的场景中,有几种不同的方法可以实现数据统计,包括通过程序处理、使用临时表和包、标准SQL的UNION以及Oracle特有的分析函数。每种方法都有其优缺点。例如,程序处理方法与数据库无关,但增加了开发工作...
这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...
### Oracle 存储过程与函数详解 #### 6.1 引言 Oracle数据库中的存储过程和函数是PL/SQL编程的重要组成部分。它们是数据库中存储的命名块,可以...熟练掌握这两种工具的创建和使用方法对于Oracle开发者来说至关重要。
本资料"Oracle_function.zip_oracle"包含的"Oracle_function.chm"帮助手册正是为了解析和理解Oracle中的各种函数而准备的。 首先,我们要明白函数是预定义的代码块,可以接受一个或多个输入(参数),执行特定操作...
“oracle function api.chm”文件很可能是Oracle函数的离线帮助文档,通常包含了详细的函数说明、参数列表、示例和返回值等信息,是学习和查阅Oracle API的重要资源。 总结,Oracle的函数和API为开发者提供了强大的...
以上内容详细介绍了Oracle存储过程的相关知识点,包括其概念、优点、创建和调用方法、存储函数、包的概念及其使用示例。通过这些知识点的学习,可以更好地理解和掌握Oracle存储过程的应用技巧,从而提高数据库应用...
该压缩包 基本包含了 Oracle中的所有函数 对于学习Oracle很有帮助的 我觉得!
这份"ORACLE函数大全"文档无疑为学习和使用Oracle数据库的用户提供了宝贵的资源。下面,我们将深入探讨Oracle函数的各个方面。 1. **数据类型转换函数**: - `TO_CHAR()`:将数值或日期转换为字符串格式。 - `TO_...
在Oracle SQL的学习过程中,有许多关键知识点需要掌握,这些知识点将帮助你有效地操作和管理Oracle数据库。 首先,了解SQL的基础语法是至关重要的。这包括数据查询、插入、更新和删除操作,即DQL(Data Query ...
本资料“Oracle_SQL_function”主要聚焦于Oracle中的常用函数及其使用方法,旨在帮助用户更好地理解和掌握在Oracle环境中进行SQL操作。 一、字符串函数 1. CONCAT():用于连接两个或更多字符串。例如,CONCAT('...
在Oracle学习的第七章中,我们将深入探讨两个关键概念:子程序和程序包,这些都是数据库开发和管理中的重要组成部分。 首先,让我们了解什么是子程序。在Oracle中,子程序包括过程(Procedure)和函数(Function)...
Oracle数据库是世界上最广泛使用的数据库管理系统之一,用于...以上就是Oracle数据库学习笔记中涉及的主要知识点,对于理解和操作Oracle数据库至关重要。深入理解和掌握这些概念,将有助于你成为更优秀的数据库管理员。
### Oracle学习之函数与存储过程详解 #### 一、函数的定义及应用 函数在Oracle中主要用于执行特定的计算或逻辑处理,并返回一个结果。它们是数据库编程中的重要组成部分,可以提高代码的重用性和可维护性。 #####...
博客:PostgreSQL的学习心得和知识总结(四十四)|语法级自上而下完美实现Oracle数据库DECODE函数的实现方案(GreenPlum & AntDB)
学习这个包的内容,将帮助你理解和掌握如何在实际的大型项目中有效地使用Oracle数据库进行开发和维护。理解并熟练运用这些知识点,对于提升数据库管理和编程能力,解决复杂业务问题,优化系统性能等方面都有极大的...
9. 存储过程(PROCEDURE)和函数(FUNCTION):学习编写和调用存储过程和函数,以封装复杂的业务逻辑。 10. 权限和角色(GRANT和REVOKE):了解如何分配和撤销用户对数据库对象的访问权限,理解角色的概念。 11. ...
这份"Oracle经典的学习PPT"涵盖了对PL/SQL的全面学习,对于想要深入理解Oracle数据库和提升数据库编程能力的人来说,是一份宝贵的学习资源。 在Oracle的PL/SQL学习中,我们首先要了解它的基本结构和语法。PL/SQL由...
本资料“Oracle SQL function.ppt”将深入探讨Oracle SQL中的函数及其应用。 1. **SQL基础** - SQL是用于处理关系数据库的标准语言,包括查询、插入、更新和删除数据。 - 在Oracle SQL中,函数是用来处理或转换...
在Oracle 10g中,你可以使用CREATE PROCEDURE和CREATE FUNCTION来创建它们。 9. **触发器**:触发器是自动执行的数据库对象,响应特定的数据库事件,如INSERT、UPDATE或DELETE操作。它们可以用来实现业务规则或数据...