oracle存储过程与游标的使用

CREATE OR REPLACE PROCEDURE xjp_sp_autohold_greencard1

AS
   v_TARGETVALUE NUMBER;
   v_val      NVARCHAR2(40);

BEGIN
  
  SELECT TARGETVALUE INTO v_TARGETVALUE FROM characteristic c WHERE c.characteristic='Therehold_AutoHold_GreenCard' AND c.ACTIVE=1;

  UPDATE LOT_NO L SET L.OBJECTCLASS='N' WHERE l.expirationdate =trunc(SYSDATE)+v_TARGETVALUE AND l.expirationdate >SYSDATE ;
  
  INSERT INTO xjp_t_audit_admin(PERFORMEDBY,TYPE,PERFORMEDON,OLDVALUE,NEWVALUE,CREATEDON,CREATEDBY)
  SELECT 'SYSTEM','QUAL STATUS'||P.PRODUCTNO||L.LOTNO,sysdate,'release','hold',sysdate,'SYSTEM'
  FROM lot_no l,PRODUCT p
  WHERE l.expirationdate <=SYSDATE+v_TARGETVALUE AND l.expirationdate>SYSDATE AND l.productid=p.id;
 
END;


CREATE OR REPLACE PROCEDURE xjp_sp_autohold_greencard
AS
 v_TARGETVALUE NUMBER;

BEGIN
  SELECT TARGETVALUE INTO v_TARGETVALUE FROM characteristic c WHERE c.characteristic='Therehold_AutoHold_GreenCard' AND c.ACTIVE=1;
  
        DECLARE
         v_val      NVARCHAR2(40);
         v_lotno    NVARCHAR2(40);
         v_productid  NVARCHAR2(40);
         v_productno  NVARCHAR2(40);
         
       CURSOR c_cursor IS 
         select l.lotno, l.productid, l.expirationdate ,p.productno from lot_no l INNER JOIN  product p on  l.productid=p.id;   
               
        BEGIN
         OPEN c_cursor;
           LOOP
            FETCH c_cursor INTO  v_lotno,v_productid,v_val,v_productno;
            EXIT WHEN c_cursor%NOTFOUND; 
              IF v_val = trunc(sysdate) + v_TARGETVALUE THEN
                 UPDATE LOT_NO L SET L.OBJECTCLASS='N' where lotno=v_lotno and productid=v_productid;
                 INSERT INTO xjp_t_audit_admin(PERFORMEDBY,TYPE,PERFORMEDON,OLDVALUE,NEWVALUE,CREATEDON,CREATEDBY)values('SYSTEM','QUAL STATUS'||v_productno|| v_lotno,sysdate,'release','hold',sysdate,'SYSTEM' );
              END IF;
           END loop;
        CLOSE c_cursor;
        END; 
END;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值