CREATE OR REPLACE TRIGGER kcxxkcmxline BEFORE INSERT OR UPDATE ON XYKRKXX FOR EACH ROW declare i number(5):=1; OUT CHAR(9); BEGIN IF i<8-LENGTH(XYKKCMXBH.NEXTVAL) THEN i:=i+1; OUT:=OUT||'0'; ---> have a try:+ ---->|| ENDIF to_char(xykkcmxbh.nextval)=xykkcmxbh.nextval+out; INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY) VALUES (xykkcmxbh.nextval,:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,:NEW.CZY); END kcxxkcmxline
YESORACLE中字符串的连接需要用 || ,+是不行的
估计楼主写MS SQL的东东写习惯了,还没太适应PL/SQL的语法.
CREATE OR REPLACE TRIGGER kcxxkcmxline BEFORE INSERT OR UPDATE ON XYKRKXX FOR EACH ROW DECLARE i VARCHAR2(9); BEGIN i=LPAD(TO_CHAR(xykkcmxbh.nextval),9-LENGTH(TO_CHAR(xykkcmxbh.nextval)),'0'); INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY) VALUES (i,:NEW.YPBH,:NEW.YPMC,:NEW.YPFL, :NEW.GG,:NEW.RKSL,:NEW.PFJ, :NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE, :NEW.CZY); END kcxxkcmxline
CREATE OR REPLACE TRIGGER kcxxkcmxline BEFORE INSERT OR UPDATE ON XYKRKXX FOR EACH ROW BEGIN INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY) VALUES ( lpad(to_char(xykkcmxbh.nextval),9,'0'), :NEW.YPBH,:NEW.YPMC,:NEW.YPFL,:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,:NEW.CZY); END kcxxkcmxline
干嘛这么复杂 CREATE OR REPLACE TRIGGER kcxxkcmxline BEFORE INSERT OR UPDATE ON XYKRKXX FOR EACH ROWBEGIN INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY) VALUES (lpad(xykkcmxbh.nextval,8,'0'),:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,:NEW.CZY); END kcxxkcmxline
BEFORE INSERT OR UPDATE ON XYKRKXX
FOR EACH ROW
declare
i number(5):=1;
OUT CHAR(9);
BEGIN
IF i<8-LENGTH(XYKKCMXBH.NEXTVAL) THEN
i:=i+1;
OUT:=OUT||'0'; ---> have a try:+ ---->||
ENDIF
to_char(xykkcmxbh.nextval)=xykkcmxbh.nextval+out;
INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY)
VALUES (xykkcmxbh.nextval,:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,:NEW.CZY);
END kcxxkcmxline
估计楼主写MS SQL的东东写习惯了,还没太适应PL/SQL的语法.
BEFORE INSERT OR UPDATE ON XYKRKXX
FOR EACH ROW
DECLARE
i VARCHAR2(9);
BEGIN
i=LPAD(TO_CHAR(xykkcmxbh.nextval),9-LENGTH(TO_CHAR(xykkcmxbh.nextval)),'0');
INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY)
VALUES (i,:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,
:NEW.GG,:NEW.RKSL,:NEW.PFJ,
:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,
:NEW.CZY);
END kcxxkcmxline
BEFORE INSERT OR UPDATE ON XYKRKXX
FOR EACH ROW
BEGIN
INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY)
VALUES (
lpad(to_char(xykkcmxbh.nextval),9,'0'),
:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,:NEW.CZY);
END kcxxkcmxline
CREATE OR REPLACE TRIGGER kcxxkcmxline
BEFORE INSERT OR UPDATE ON XYKRKXX
FOR EACH ROWBEGIN
INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY)
VALUES (lpad(xykkcmxbh.nextval,8,'0'),:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,:NEW.LSJJE,:NEW.CZY);
END kcxxkcmxline