各位:
正如标题所说:
以下是本人写的代码:但有错
CREATE OR REPLACE TRIGGER T_GetOutLetVarierry
BEFORE UPDATE ON ALL_TBSJ
FOR EACH ROW
DECLARE
OLD_Value VARCHAR2(500);
Total_ROWS INT;
V_SQL_OldVavlus VARCHAR2(100);
V_SQL VARCHAR2(100);
CURSOR Select_Column IS
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'ALL_TBSJ';
CURSOR_COLUMNS USER_TAB_COLUMNS.COLUMN_NAME%TYPE;
OPEN Select_Column;
FETCH Select_Column INTO CURSOR_COLUMNS;
WHILE Select_Column %FOUND LOOP
-- V_SQL_OldVavlus := 'SELECT :OLD.'||CURSOR_COLUMNS||' INTO OLD_Value FROM DUAL'; --fetch the old data for change column
DBMS_OUTPUT.PUT_LINE(':OLD.'||CURSOR_COLUMNS)
EXECUTE IMMEDIATE V_SQL_OldVavlus;
SELECT COUNT(*) INTO Total_ROWS FROM ALL_TBSJ WHERE COLUMN_NAME = OLD_Value;---judgment the old_Value in which Column
IF Total_ROWS >= 1 THEN
V_SQL := 'INSERT INTO CC (COLUMN_S,OLDDATA,NEWDATA) VALUES (';
V_SQL := V_SQL ||CURSOR_COLUMNS||',:OLD.'||CURSOR_COLUMNS||',:NEW.'||CURSOR_COLUMNS||')';
EXECUTE IMMEDIATE V_SQL;
END IF;
FETCH Select_Column INTO CURSOR_COLUMNS;
END LOOP;
CLOSE Select_Column;
-- COMMIT;
--EXCEPTION
-- WHEN OTHERS THEN
-- NULL;
END T_GetOutLetVarierry;
报错:并非所有的变量都也关联