好听的jpop:SQL编程翻译

来源:百度文库 编辑:高考问答 时间:2024/05/07 08:40:01
请各位帮我翻译一下以下的SQL语句:
1、
CREATE OR REPLACE PACKAGE XS_UPDATE_1 AS
PROCEDURE XS_POS_CANCLEXS;
PROCEDURE XS_POS_001;
PROCEDURE XS_POS_002;
PROCEDURE XS_POS_003;
PROCEDURE XS_POS_004;
PROCEDURE XS_POS_005;
PROCEDURE XS_POS_006;
PROCEDURE XS_POS_007;
PROCEDURE XS_POS_008;
PROCEDURE XS_POS_009;
PROCEDURE XS_POS_010;
END XS_UPDATE_1;

2、
CREATE OR REPLACE PROCEDURE UPDATE_YK_QTY IS
CURSOR C_PS_SPYK IS
SELECT PS1.POSIN_F,PS2.ITEM,SUM(NVL(PS2.PACK,0)*NVL(PS2.UNIT,0)+NVL(PS2.QTY,0))
FROM DJPS001 PS1,DJPS002 PS2 WHERE PS1.STATUS = '0' AND PS1.BILL = PS2.BILL
GROUP BY PS1.POSIN_F,PS2.ITEM;

CURSOR C_PF_SPYK IS
SELECT PF1.POSIN,PF2.ITEM,SUM(NVL(PF2.PACK,0)*NVL(PF2.UNIT,0)+NVL(PF2.QTY,0))
FROM DJPF001 PF1,DJPF002 PF2 WHERE PF1.STATUS = '0' AND PF1.BILL = PF2.BILL
GROUP BY PF1.POSIN,PF2.ITEM;

IS_POSIN VARCHAR2(10);
IS_ITEM VARCHAR2(13);
IN_QTY NUMBER(12,3);
V_ERRORNUMBER NUMBER(5);
V_ERRORTEXT VARCHAR2(200);
BEGIN
UPDATE SPDA002 SET YK_QTY = 0 WHERE YK_QTY > 0;
COMMIT;
OPEN C_PS_SPYK;
LOOP
FETCH C_PS_SPYK INTO IS_POSIN,IS_ITEM,IN_QTY;
EXIT WHEN C_PS_SPYK%NOTFOUND;
UPDATE SPDA002 SET YK_QTY = NVL(YK_QTY,0) + IN_QTY WHERE POSIN = IS_POSIN AND ITEM = IS_ITEM;
COMMIT;
END LOOP;
CLOSE C_PS_SPYK;
OPEN C_PF_SPYK;
LOOP
FETCH C_PF_SPYK INTO IS_POSIN,IS_ITEM,IN_QTY;
EXIT WHEN C_PF_SPYK%NOTFOUND;
UPDATE SPDA002 SET YK_QTY = NVL(YK_QTY,0) + IN_QTY WHERE POSIN = IS_POSIN AND ITEM = IS_ITEM;
COMMIT;
END LOOP;
CLOSE C_PF_SPYK;

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
V_ERRORNUMBER := SQLCODE;
V_ERRORTEXT := SUBSTR(SQLERRM,1,200);
RAISE_APPLICATION_ERROR(-20999,'错误号:'||V_ERRORNUMBER||
'信息'||V_ERRORTEXT);
END UPDATE_YK_QTY;

3、
create or replace trigger TRG_ADD_DJRK002
BEFORE INSERT ON DJRK002
FOR EACH ROW
BEGIN
IF :NEW.SEQ_ADD_NO IS NULL OR :NEW.SEQ_ADD_NO = 0 THEN
Select seq_RK_ADD_id.nextval into :new.seq_add_no from dual;
:new.yn_cf := 'Y';
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20999,'读取序列seq_RK_add_id发生错误');
End trg_add_djRK002;