TN - HDB - 0004 - 润乾迁移HANA递归sql解决方案
更新时间:2024-04-22 01:10:01 阅读量: 综合文库 文档下载
- 泰诺林推荐度:
- 相关推荐
润乾迁移HANA递归sql解决方案
By hujue
1. 概述
递归语句是数据库中用于解决父子节点关系的组织结构数据,在oracle及informix中都是采用start with … connect by …的递归语句进行处理;
而在HANA 1.0.33中还支持的start with … connect by …,在1.0.7000版本中已经不被支持,而在润乾报表数据集以及存储过程中大量使用了该递归语句进行处理,这就需要自行进行处理。
2. 解决方案
2.1. 解决方案说明
在该方案中,特别为使用TF_RPT_HN_STAT_BSHZQK进行递归查询而定制了hana函数FUNC_TF_RPT_HN_STAT_BSHZQK,该函数只能查询TF_RPT_HN_STAT_BSHZQK数据表,输入参数为 issue,rpt_id,和dept_id,另外,该函数只能从上到下进行查询。
输入参数如下: ? issue:格式为’120130000’,’320131200’ ,’620131212’等,用于对数据表进行预先筛选; ? rpt_id:格式为’HDY01’等,用于对数据表进行预先筛选; ? dept_id:用于递归sql的起始dept_id
函数调用后,返回一个table类型的数据集,在hana中,table类型数据集可以作为sql中from后的数据来源。
返回table类型字段如下:
? dept_id:nvarchar(100),单位编码,来源于BSHZQK数据表dept_id字段 ? dept_name:nvarchar(100),单位名称,来源于BSHZQK数据表dept_id字段 ? px:int,单位排序,来源于BSHZQK数据表px字段
? CONNECT_BY_LEVEL:int,单位级别,在函数中生成,用于标识单位的层级 ? CONNECT_BY_ISLEAF:int,是否叶子节点,是=1,否=0,预留 ? CONNECT_BY_PATH:varchar(5000),dept_id结合_形成的path
? CONNECT_BY_SORT:varchar(5000),px结合_形成的sort,用于实现按目录树排序
2.2. SQL调用示例 HANA select * from FUNC_TF_RPT_HN_STAT_BSHZQK ('320131200','HDY01','10000000') ORACLE select * from (select * from TF_RPT_HN_STAT_BSHZQK t where t.issue='320131200' and t.rpt_id='HDY01') a start with a.dept_id = '10000000' connect by prior a.dept_id=a.dept_mng_id order siblings by a.px 如表格中示例所示,'320131200','HDY01'这个2个参数是用于对BSHZQK数据表的预先筛选,'10000000'是用于确定start单位编码
需要注意的是,FUNC_TF_RPT_HN_STAT_BSHZQK(issue_,rpt_id_,dept_id_)中,issue_和rpt_id_不能是表达式,只能是参数,如下
2.3. 润乾调用示例 ? 润乾示例
hana递归示例.raq http://pan.http://www.wodefanwen.com//s/1hqr8NvY
? 数据集SQL设置
? 参数设置
以上润乾调用方法有点特别,关键还是在hana该函数参数不能是表达式,只能对参数在润乾中预先处理。
3. 函数代码
create function FUNC_TF_RPT_HN_STAT_BSHZQK(IN issue_ NVARCHAR(100),IN rpt_id_ NVARCHAR(100),IN root_id_ NVARCHAR(100)) RETURNS table(dept_id nvarchar(100),dept_name nvarchar(100),px int,CONNECT_BY_LEVEL int,CONNECT_BY_ISLEAF int,CONNECT_BY_PATH varchar(5000),CONNECT_BY_SORT varchar(5000)) LANGUAGE SQLSCRIPT AS begin DECLARE node_level INT := 1; DECLARE isleaf INT := 0; DECLARE node_count int := 1; declare px_length int ; declare ss nvarchar(100):= ' issue=''' || :issue_ || ''' and rpt_id='''|| :rpt_id_ ||''''; tmp1 = APPLY_FILTER(TF_RPT_HN_STAT_BSHZQK,:ss) ; select length(max(px)) into px_length from :tmp1; tmp2 = select dept_id,dept_name, :node_level as dept_level, px, to_varchar(dept_id) || ',' as CONNECT_BY_PATH, lpad('1',px_length,'0') || '_' as CONNECT_BY_SORT from :tmp1 where dept_id = :root_id_; tmp3 = select dept_id,dept_name, :node_level as dept_level, px, to_varchar(dept_id) || ',' as CONNECT_BY_PATH, lpad('1',px_length,'0') || '_' as CONNECT_BY_SORT from :tmp1 where dept_id = :root_id_; while node_count > 0 do node_level := node_level + 1; select count(1) into node_count from :tmp2; tmp2 = select a.dept_id,a.dept_name, :node_level as dept_level, a.px, b.CONNECT_BY_PATH || to_varchar(a.dept_id) || ',' as CONNECT_BY_PATH, b.CONNECT_BY_SORT || lpad(a.px,px_length,'0') || '_' as CONNECT_BY_SORT from :tmp1 a , :tmp2 b where a.dept_mng_id = b.dept_id ; tmp3 = select dept_id,dept_name,dept_level,px,CONNECT_BY_PATH,CONNECT_BY_SORT from :tmp3 union all select dept_id,dept_name,dept_level,px,CONNECT_BY_PATH,CONNECT_BY_SORT from :tmp2 ; end while; RETURN select dept_id,dept_name,px,dept_level as CONNECT_BY_LEVEL,null as CONNECT_BY_ISLEAF,CONNECT_BY_PATH,CONNECT_BY_SORT from :tmp3 order by CONNECT_BY_SORT; end;
正在阅读:
TN - HDB - 0004 - 润乾迁移HANA递归sql解决方案04-22
globalization视频英语原文01-06
《绯闻女孩》经典台词(双语)06-03
产品管理大纲06-18
人类中心主义和非人类中心主义03-27
2009年4月成人英语三级A卷真题07-22
室内线路敷设方式09-19
3000字论文标准格式范文模板03-24
2011个人年终小节08-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 递归
- 迁移
- 解决方案
- 0004
- HANA
- HDB
- sql
- TN
- 计算机网络基础应用测试(含答案)
- 1、笔试问题-影院营运经理-分公司及影城
- 思政课教学实施工作总结 修改后
- 山西籍将军
- IEC61071电容器 英文-中文翻译 - 图文
- 施工技术交底记录(整套运动场工程) - 图文
- 企业中高层的招聘渠道选择问题研究报告--宫一民撰写 - 图文
- 作业63
- Eatxsh2009南京农业大学推免规定全校集合
- 2+2概率论题目 - 图文
- 爱一行,干一行辩论赛材料汇总
- 网站建设课程设计 - 图文
- 让本土文化植根在孩子心中
- 中国
- 2017年医药企业三年发展规划
- 2014年832电路和电力系统分析(专硕)
- 信息系统项目管理师习题集锦之人力资源管理
- 2016年河北科技大学公开招聘工作人员笔试内容
- 工作票考核标准细则
- 武汉理工大学网络专升本计算机基础阶段1-2