当前位置: 首页 > news >正文

平均融资利率求法及ORACLE语法解析

1.首先创造一个名为 PJRZCB_YD_RESULT_SET 的 OBJECT 类型

  注意其中不可以使用保留字段作为列名 , 如DATE 等, 否则可以创建 , 但无法被后续的 TABLE类型引用

CREATE OR REPLACE TYPE ZMDM.PJRZCB_YD_RESULT_SET AS OBJECT (month VARCHAR2(10000),DATE_STR  VARCHAR2(1000),value VARCHAR2(1000)
);

此处创建的是行级别的类型

2.创建一个名为 多行(表类型)的定义

CREATE OR REPLACE TYPE ZMDM.PJRZCB_YD_RESULT_SET_TABLE AS TABLE OF ZMDM.PJRZCB_YD_RESULT_SET;

3.创建函数 PJRZCB_YD_FUNC_TEST
  其中如果有使用到DML语句 , 则需要使用IS PRAGMA AUTONOMOUS_TRANSACTION;

CREATE OR REPLACE FUNCTION ZMDM.PJRZCB_YD_FUNC_TESTRETURN ZMDM.PJRZCB_YD_RESULT_SET_TABLE PIPELINED
IS PRAGMA AUTONOMOUS_TRANSACTION;IN_MONTH_STR  VARCHAR2(7);IN_DATE_STR VARCHAR2(10);IN_MONTH_NUM    NUMBER;MONTH_STR  VARCHAR2(7);DATE_STR VARCHAR2(10);MONTH_NUM    NUMBER;v_row ZMDM.PJRZCB_YD_RESULT_SET;CURSOR cur_months ISSELECT A.end_timestamp FROM (SELECT TO_TIMESTAMP(CASE WHEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1 - ROWNUM) = TRUNC(SYSDATE, 'MM') THEN TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD') || ' 00:00:00'ELSE TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1 - ROWNUM)), 'YYYY-MM-DD') || ' 00:00:00'END,'YYYY-MM-DD HH24:MI:SS') AS end_timestampFROM DUAL CONNECT BY ROWNUM <= 12)A LEFT JOIN DP_PJRZCB_LASTYEAR B ON TO_CHAR(A.end_timestamp , 'YYYY-MM-DD') = B.DATE_STRWHERE B.DATE_STR IS NULL ;BEGINFOR rec IN cur_months LOOP-- 用 SELECT INTO 的方式赋值SELECTTO_CHAR(rec.end_timestamp, 'YYYY-MM') AS MONTH_STR, TO_CHAR(rec.end_timestamp, 'YYYY-MM-DD') AS DATE_STR  ,NVL((SUM((a.AMOUNT - (SELECTNVL(SUM(gci.amount),0)FROMGDT_CONTEXEC_INFO@FSS_DBLINK gciWHEREgci.CONTRACT_ID = a.CONTRACTIDAND gci.CONTEXEC_TYPE in (1,6)AND gci.buss_date <= rec.end_timestamp  )) *    (SELECTvcw.rateFROMvw_contract_with_rates@FSS_DBLINK vcwWHEREvcw.CONTRACTID = a.CONTRACTIDAND vcw.EFFECT_DATE <= rec.end_timestamp   ))/100)    / NVL(SUM(a.AMOUNT - (SELECTNVL(SUM(gci.amount),0)FROMGDT_CONTEXEC_INFO@FSS_DBLINK gciWHEREgci.CONTRACT_ID = a.CONTRACTIDAND gci.CONTEXEC_TYPE in (1,6)AND gci.buss_date <= rec.end_timestamp  )),0)*100,0) AS MONTH_NUM  INTO   IN_MONTH_STR ,IN_DATE_STR  , IN_MONTH_NUMFROMvw_gdt_contract_query_mater@FSS_DBLINK aWHEREa.state != 8AND a.CLTNO IN(2000,2001,5792,5797,2002,5895,2003,2031,2025,2023,2022,2068,1513,6905,6912,5251,2015,2004,2556,2018,2008,1000,6904,6903,6909,6906,6910,8805,8701,1016,2542,2543,2541,2641,1505,1511,1512,1019,2037,2009,9803,1002,0024,2016,6501,1021,2713,6502,1012,2546,2583,2577,2586,2584,2585,2574,2580,2886,3551,2507,2591,2606,2604,2605,2603,2611,2602,2707,2608,2610,2612,2616,2617,2621,2620,2609,2622,1014,0802,1018,2209,1022,2725,2516,0128,0133)AND a.BUSSVARIETY NOT IN ('CLMS02'    ,'CLMS10', 'CLMS17')AND a.assbankname NOT LIKE '%中煤财务%'AND a.startDate <= rec.end_timestampAND a.endDate >= rec.end_timestamp  ;INSERT INTO DP_PJRZCB_LASTYEAR (MONTH_STR, DATE_STR, MONTH_NUM) VALUES (IN_MONTH_STR ,IN_DATE_STR  , IN_MONTH_NUM); COMMIT; END LOOP;FOR rec_return IN (SELECT MONTH_STR,DATE_STR,MONTH_NUM FROM (SELECT TO_TIMESTAMP(CASE WHEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1 - ROWNUM) = TRUNC(SYSDATE, 'MM') THEN TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD') || ' 00:00:00'ELSE TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1 - ROWNUM)), 'YYYY-MM-DD') || ' 00:00:00'END,'YYYY-MM-DD HH24:MI:SS') AS end_timestampFROM DUAL CONNECT BY ROWNUM <= 12) A LEFT JOIN  (SELECT MONTH_STR, DATE_STR, MONTH_NUM FROM DP_PJRZCB_LASTYEAR) B ON  TO_CHAR(end_timestamp , 'YYYY-MM-DD') = B.DATE_STRWHERE B.DATE_STR IS NOT NULL ) LOOP-- 每行数据直接通过PIPE ROW返回PIPE ROW( ZMDM.PJRZCB_YD_RESULT_SET( rec_return.MONTH_STR, rec_return.DATE_STR,  rec_return.MONTH_NUM ) ); END LOOP;RETURN;
END;

.

.

http://www.zskr.cn/news/23149.html

相关文章:

  • [Linux]如何列出被软链接的文件,列出被链接位置
  • 10.13课后作业
  • 不情愿算法学概论
  • 软考-系统架构设计师 NoSQL数据库详细讲解 - 指南
  • OMP: Error #15: Initializing libiomp5md.dll报错解决强大的方案
  • Pixelium Design:Vue3 的像素风 UI 组件库
  • 效率与安全双升:AI许可证识别重塑医药行业合规流程
  • Spring BeanPostProcessor 前置处理 afterPropertiesSet BeanPostProcessor 后置处理区别
  • c语言单向链表操作
  • 第十七篇
  • AtCoder arc208 总结
  • `uv run pytest` does not work
  • mysql删除数据表某个日期之前的数据
  • 直播软件开发搭建公司
  • Nexpose 8.24.0 for Linux Windows - 漏洞扫描
  • 实测PaddleOCR-VL:文心4.5最强衍生模型如何重构文档处理效率
  • PHPMyAdmin上传SQL文件报错:413 Request Entity Too Large
  • 2025 年电动球阀厂家最新推荐榜:覆盖智能灌溉、物联网、远程控制等场景,深度解析行业优质企业及选择指南
  • 接触式位移波形优化
  • 【活动预告】2025斗拱开发者大会,共探支付与AI未来
  • 2025年口碑好的石材源头厂家排行榜:十大优质供应商全面解析
  • 2025年口碑最佳的石材生产厂家Top10排名
  • 2025 年最新衬氟球阀实力厂家排行榜:聚焦气动 F46 电动三通美标等类型,优选技术质量双优企业电动/三通/美标/耐腐蚀衬氟球阀厂家推荐
  • 豆包生成图片去除水印
  • 2025 年脱油机厂家最新推荐榜:覆盖五金铝屑铜屑金属多类型设备,权威解析优质厂商选择指南
  • Dc-3靶机渗透
  • 【每日Arxiv热文】ICLR2026 !SAM3重磅来袭:能“听懂人话”的分割模型,性能狂飙2倍!
  • 2025 年预制舱生产厂家最新推荐排行榜:深度剖析行业领军企业,助力客户精准选购优质产品光伏/电力/模块化/低压/高压/防爆预制舱厂家推荐
  • 2025国际冷链运输推荐腾翼搏时,专业温控医药物流供应商!
  • 2025连铸机设备推荐:瑞熠机械制造,专业生产优质厂家!