希望审核已更新和插入的行。
运行脚本时,是否可以捕获'(x个受影响的行)'等
例如
INSERT INTO test_table (name, age)
VALUES ('Patrick', 22);
UPDATE test_table
SET age = 33
WHERE name = 'Patrick'
'(1 row(s) affected)'
然后将其插入审核表。 XXX是“((受影响的1行))”。
INSERT INTO audit_table (table_used, records_changed)
VALUES ('test_table', XXX);
答案 0 :(得分:0)
DECLARE @RowCount1 INT;
INSERT INTO test_table (name, age)
VALUES ('Patrick', 22);
UPDATE test_table
SET age = 33
WHERE name = 'Patrick'
SELECT @RowCount1 = @@ROWCOUNT
INSERT INTO audit_table (table_used, records_changed)
VALUES ('test_table', @RowCount1);
答案 1 :(得分:-1)
或者,您可以使用触发器查看更改的行。
CREATE TRIGGER test_table_aut
AFTER
UPDATE
ON test_table
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
d_user_id NUMBER(8) := FND_GLOBAL.USER_ID;
d_date DATE := SYSDATE;
d_error VARCHAR2(2000);
BEGIN
INSERT INTO audit_table (
updated_by,
update_date,
old_name,
old_age
new_name,
new_age
)
VALUES (
d_user_id,
d_date,
:OLD.name,
:OLD.age,
:NEW.name
:NEW.age
);
EXCEPTION WHEN OTHERS THEN
d_error := SQLERRM;
INSERT INTO xx_error VALUES('test_table_aut '||d_error);
END;
/
因此您可以获得以下输出。