wenshao600
作者wenshao600·2013-06-13 15:54
其它·广州南天

存储过程在FM中的使用

字数 2175阅读 2758评论 9赞 2
FM中,可以调用复杂的存储过程来进行数据处理,包括修改记录、生成新纪录、删除记录、获得查询结果集等。
要点:建立基于proc的查询主题;导入写好的proc(带out结果,单个数据,用普通变量,结果集输出,用cursor)。
eg:
1.存储过程:
create or replace procedure p_test(v_cstm_no in CHAR, v_accs OUT  sys_refcursor  )
IS

BEGIN
  OPEN v_accs FOR
    SELECT 1 ITEM_NO, --4.日均存款余额,按月。  项目年日均的季度日军,取over_year_bal/over_year_days就可
           T1.DTL_MON,
           T1.MONTH_BAL,
           T1.DAYS_IN_MONTH,
           SUM(T1.MONTH_BAL) OVER(PARTITION BY T1.YEAR_KEY, T1.QUARTER_KEY ORDER BY T1.DTL_MON) OVER_MONTH_BAL, --逐季度日均余额之和
           SUM(T1.DAYS_IN_MONTH) OVER(PARTITION BY T1.YEAR_KEY, T1.QUARTER_KEY ORDER BY T1.DTL_MON) OVER_MONTH_DAYS, --季度天数
           SUM(T1.MONTH_BAL) OVER(PARTITION BY T1.YEAR_KEY ORDER BY T1.DTL_MON) OVER_YEAR_BAL, --年日均余额之和
           SUM(T1.DAYS_IN_MONTH) OVER(PARTITION BY T1.YEAR_KEY ORDER BY T1.DTL_MON) OVER_YEAR_DAYS, --年天数
           SYSDATE
      FROM (SELECT SUM(A.CR_CRT_BAL) MONTH_BAL,
                   A.DTL_MON,
                   SUBSTR(A.DTL_MON, 1, 4) YEAR_KEY,
                   B.DAYS_IN_MONTH,
                   B.QUARTER_KEY
              FROM T_GNL_DTL_ERP A,
                   (SELECT DISTINCT MONTH_KEY, DAYS_IN_MONTH, QUARTER_KEY
                      FROM D_TIME) B --取得月份以及该月的天数
             WHERE A.DTL_MON = B.MONTH_KEY
               AND A.ITM_NO IN ('2011', '2002')
             GROUP BY A.DTL_MON, B.DAYS_IN_MONTH, B.QUARTER_KEY) T1;
end p_test;


2.FM上,用#promtp()# 往存储过程传参数,根据存储过程的open c_cursorA for。。。得到cursor结果集

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论9 条评论

shooter20123shooter20123软件开发工程师CPIC
2013-09-12 22:11
好厉害,请教老师能不能有informix存储过程的调用方式?
housheng33housheng33软件开发工程师农行软件开发中心
2013-07-24 20:34
不错,。。。。可以用在实时,不用进行数据抽取,数据量几百万的、业务不太复杂的情况,提高查询效率,挺好的!!!
lsunwinglsunwingETL开发工程师ZTE
2013-07-22 20:43
还未请教,效率如何
wenshao600wenshao600其它广州南天
2013-07-12 13:37
tanj: 定义系统游标返回结果集,给COGNOS报表,我也是这么定义的 sys_refcursor ,功能是实现了,过程逻辑比较简单
暂时还没遇到要复杂着写的,如果复杂的,就直接在抽取数据环节处理了,呵呵
tanjtanj软件开发工程师新致软件
2013-07-10 11:05
定义系统游标返回结果集,给COGNOS报表,我也是这么定义的 sys_refcursor ,功能是实现了,过程逻辑比较简单
chu227chu227软件开发工程师longtop
2013-06-24 13:54
写的很不错
wenshao600wenshao600其它广州南天
2013-06-17 14:57
贝克汉姆: 支持分享精神,建议把过程写细一点
会尽量具体,写好了,自己收益,也能让别人看着舒服。论坛的服务意识,哈哈
wenshao600wenshao600其它广州南天
2013-06-17 09:34
贝克汉姆: 支持分享精神,建议把过程写细一点
呵呵,论坛上有帖子的拉。我还想着只是把自己的思路做个标记的。 小贝,最近看sample,我好像没法体会sales那个模型的妙处,等你们录完FM,TS的视频,建议价格sample讲解咯
贝克汉姆贝克汉姆软件开发工程师IBM
2013-06-17 09:30
支持分享精神,建议把过程写细一点
Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广