CREATE OR REPLACE TRIGGER BV.TRIGGER_MR_SHIP_ADDR_INSERT
BEFORE INSERT
ON BV.MR_SHIP_ADDR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
TEMP_OID INTEGER;
TEMP_SALES_ID varchar(10);
TEMP_AGENT_ID VARCHAR2(20);
TEMP_SHIP_ID VARCHAR(20);
TEMP_SHIP_ADDR VARCHAR(200);
type MR_SHIP_ADDR_REC is record(
V_PROD_GRP BV.DC_AGENTBUSIUNIT.BUSI_UNIT_ID%TYPE,
V_SALES_ID BV.DC_AGENTBUSIUNIT.SALESORG_ID%TYPE
);
type MR_SHIP_ADDR_CURSOR is ref cursor return MR_SHIP_ADDR_REC;
MR_SHIP_ADDR_SELECT_CURSOR MR_SHIP_ADDR_CURSOR;
MR_SHIP_ADDR_SELECT_RECORD MR_SHIP_ADDR_REC;
BEGIN
TEMP_OID := :NEW.OID;
TEMP_SHIP_ID := :NEW.SHIP_ALIAS;
TEMP_SHIP_ADDR := :NEW.SHIP_ADDRESS;
SELECT DC_ERP_AGENT_ID INTO TEMP_AGENT_ID FROM MR_ACCT_PROFILE WHERE OID=TEMP_OID; open MR_SHIP_ADDR_SELECT_CURSOR for
SELECT C.BUSI_UNIT_ID,C.SALESORG_ID FROM MR_ACCT_PROFILE A,DC_AGENTBUSIUNIT C WHERE A.ACCOUNT_NAME=C.AGENT_ID
AND OID=TEMP_OID;
IF MR_SHIP_ADDR_SELECT_CURSOR%ISOPEN THEN
LOOP
FETCH MR_SHIP_ADDR_SELECT_CURSOR INTO MR_SHIP_ADDR_REC;
EXIT WHEN MR_SHIP_ADDR_SELECT_CURSOR%NOTFOUND;
INSERT INTO HP_HOMEPC_RT (SALE_GRP,AGENT_ID,SENDER_ID,HPID,PL,ADDRESS,MODIFY_TIME,MODIFY_NAME,CREATE_TIME)
VALUES (MR_SHIP_ADDR_REC.V_SALES_ID,DC_ERP_AGENT_ID,TEMP_SHIP_ID,'',MR_SHIP_ADDR_REC.V_PROD_GRP,TEMP_SHIP_ADDR,SYSDATE,'system',SYSDATE);
END LOOP;
END IF;END TRIGGER_MR_SHIP_ADDR_INSERT;
BEFORE INSERT
ON BV.MR_SHIP_ADDR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
TEMP_OID INTEGER;
TEMP_SALES_ID varchar(10);
TEMP_AGENT_ID VARCHAR2(20);
TEMP_SHIP_ID VARCHAR(20);
TEMP_SHIP_ADDR VARCHAR(200);
type MR_SHIP_ADDR_REC is record(
V_PROD_GRP BV.DC_AGENTBUSIUNIT.BUSI_UNIT_ID%TYPE,
V_SALES_ID BV.DC_AGENTBUSIUNIT.SALESORG_ID%TYPE
);
type MR_SHIP_ADDR_CURSOR is ref cursor return MR_SHIP_ADDR_REC;
MR_SHIP_ADDR_SELECT_CURSOR MR_SHIP_ADDR_CURSOR;
MR_SHIP_ADDR_SELECT_RECORD MR_SHIP_ADDR_REC;
BEGIN
TEMP_OID := :NEW.OID;
TEMP_SHIP_ID := :NEW.SHIP_ALIAS;
TEMP_SHIP_ADDR := :NEW.SHIP_ADDRESS;
SELECT DC_ERP_AGENT_ID INTO TEMP_AGENT_ID FROM MR_ACCT_PROFILE WHERE OID=TEMP_OID; open MR_SHIP_ADDR_SELECT_CURSOR for
SELECT C.BUSI_UNIT_ID,C.SALESORG_ID FROM MR_ACCT_PROFILE A,DC_AGENTBUSIUNIT C WHERE A.ACCOUNT_NAME=C.AGENT_ID
AND OID=TEMP_OID;
IF MR_SHIP_ADDR_SELECT_CURSOR%ISOPEN THEN
LOOP
FETCH MR_SHIP_ADDR_SELECT_CURSOR INTO MR_SHIP_ADDR_REC;
EXIT WHEN MR_SHIP_ADDR_SELECT_CURSOR%NOTFOUND;
INSERT INTO HP_HOMEPC_RT (SALE_GRP,AGENT_ID,SENDER_ID,HPID,PL,ADDRESS,MODIFY_TIME,MODIFY_NAME,CREATE_TIME)
VALUES (MR_SHIP_ADDR_REC.V_SALES_ID,DC_ERP_AGENT_ID,TEMP_SHIP_ID,'',MR_SHIP_ADDR_REC.V_PROD_GRP,TEMP_SHIP_ADDR,SYSDATE,'system',SYSDATE);
END LOOP;
END IF;END TRIGGER_MR_SHIP_ADDR_INSERT;
解决方案 »
- Your username and/or password are invalid.
- 高级复制出现 ORA-23375: 功能与数据库版本 不兼容
- orcale 触发器问题 为什么没有做对应的修改
- 帮忙看下这个子查询!
- oracle 表分区 复合分区 问题 (在线等待)
- #!/bin/sh 问题
- 请问我在表空间中新建了一个USER02.DBF文件,但默认是ORA扩展名的,我改成DBF了,有没有什么影响,有什么区别呢,
- 关于字符集,字符集改变后原来插入的汉字显示乱码,新插入的正常
- 一个菜鸟的问题
- sql语句求解
- oracle自定义table类型不能被fetch?
- 关于级联查询保留level=1的列值
29/9 PL/SQL: SQL Statement ignored
32/77 PLS-00330: invalid use of type name or subtype name
32/77 PL/SQL: ORA-00904: "MR_SHIP_ADDR_REC"."V_PROD_GRP": invalid identifier
31/9 PL/SQL: SQL Statement ignored这是报的错误
不要定义MR_SHIP_ADDR_REC了,直接用两个变量好了。