oracle字符串合并

create or replace procedure PRO_PM_WORK_MAT_DEPT_SEL(V_V_ORDERGUID   IN VARCHAR2, --工单guid 
                                                     V_V_DEPTCODEREP VARCHAR2, --检修code dept
                                                     V_V_GXID        VARCHAR2, --工序序号
                                                     RET             OUT SYS_REFCURSOR) is
  DEPT_CODE     VARCHAR2(50);
  DEPT_REP_CODE VARCHAR2(50);
  NEW_DEPT      VARCHAR2(50);
  REPDEPTNUM    VARCHAR2(50);
begin
  SELECT COUNT(W.V_DEPTCODEREPARIR)
    INTO REPDEPTNUM
    FROM PM_WORKORDER W
   WHERE W.V_ORDERGUID = V_V_ORDERGUID
     AND W.V_DEPTCODEREPARIR IS NOT NULL;
  IF REPDEPTNUM = 0 THEN
    SELECT W.V_DEPTCODE
      INTO DEPT_CODE
      FROM PM_WORKORDER W
     WHERE W.V_ORDERGUID = V_V_ORDERGUID;
    NEW_DEPT := DEPT_CODE || ',' || V_V_DEPTCODEREP;
  ELSE
    SELECT W.V_DEPTCODEREPARIR
      INTO DEPT_REP_CODE
      FROM PM_WORKORDER W
     WHERE W.V_ORDERGUID = V_V_ORDERGUID;
    NEW_DEPT := DEPT_REP_CODE;
  END IF;
  --查找物料库房查找页面作业区
  OPEN RET FOR
    SELECT B.V_DEPTCODE, B.V_DEPTNAME
      FROM BASE_DEPT B
     WHERE B.V_SAP_JHGC IN
           (SELECT DISTINCT S.V_SAP_PLANDEPT
              FROM PM_WORKORDER_ET_OPERATIONS O
              LEFT OUTER JOIN SAP_PM_WORKCSAT S
                ON S.V_SAP_WORK = O.V_WORK_CENTER
             WHERE O.V_ACTIVITY = V_V_GXID
               AND O.V_ORDERGUID = V_V_ORDERGUID)
       AND B.V_DEPTCODE IN
           (SELECT REGEXP_SUBSTR(NEW_DEPT, '[^,]+', 1, LEVEL)
              FROM DUAL
            CONNECT BY REGEXP_SUBSTR(NEW_DEPT, '[^,]+', 1, LEVEL) IS NOT NULL);

end PRO_PM_WORK_MAT_DEPT_SEL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值