ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle存储过程中cursor + with用法

2022-07-25 16:34:20  阅读:220  来源: 互联网

标签:CODE VENDOR NUMBER 用法 cursor CTE Oracle PO UNIT


公用表表达式(Common Table Expression)与游标混合应用例子:

Oracle存储过程中cursor + with用法
-- P_PO_TYPE_CODE: 采购单据类型,如标准采购订单、一揽子采购协议
-- P_ITEM_CODE : 物料号
-- P_CURSOR1: 输出游标类型资料 CREATE OR REPLACE PROCEDURE CUX_TEST_CUR_RV( P_PO_TYPE_CODE IN VARCHAR2, P_ITEM_CODE IN VARCHAR2, P_CURSOR1 OUT SYS_REFCURSOR) AS BEGIN OPEN P_CURSOR1 FOR WITH CTE AS ( SELECT PV.VENDOR_NAME, PV.VENDOR_CODE, PHA.PO_NUMBER,PLA.UNIT_PRICE, PHA.CREATION_DATE FROM PO_HEADERS_ALL PHA, PO_LINES_ALL PLA, PO_VENDORS PV WHERE PHA.PO_HEADER_ID = PLA.PO_HEADER_ID AND PHA.VENDOR_ID = PV.VENDOR_ID 。。。。。 ), DPT_INFO AS ( SELECT ..... ) SELECT CTE.VENDOR_NAME, CTE.VENDOR_CODE, CTE.PO_NUMBER,CTE.UNIT_PRICE FROM CTE , DPT_INFO DI WHERE CTE.PO_NUMBER = DI.PO_NUMBER ..... END; -- 测试 游标 declare R1 sys_refcursor; V_VENDOR_NAME VARCHAR2(250); V_VENDOR_CODE VARCHAR2(150); V_PO_NUMBER VARCHAR2(150); V_UNIT_PRICE NUMBER; begin
CUX_TEST_CUR_RV( 'BLANKET','GL0116', R1); loop fetch R1 into V_VENDOR_NAME, V_VENDOR_CODE, V_PO_NUMBER,V_UNIT_PRICE; exit when R1%notfound; DBMS_OUTPUT.PUT_LINE('VENDOR_NAME,PO_NUMBER,UNIT_PRICE:'|| V_VENDOR_NAME|| ','||V_PO_NUMBER|| ','||TO_CHAR( V_UNIT_PRICE, 'fm9999999999999990.00')); end loop; close R1; end;

  

标签:CODE,VENDOR,NUMBER,用法,cursor,CTE,Oracle,PO,UNIT
来源: https://www.cnblogs.com/samrv/p/16517816.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有