我想返回在存儲過程中執行操作之前和之後的記錄數。我查了一個應該用於返回表中行數的函數。但是,它不工作。任何幫助?在Oracle中刪除/插入操作後返回記錄數
類似:Please check this link on DBA Stack Exchange
該過程只由動態SQL的(立即執行命令)。代碼太大,無法粘貼(並且保密)。
真正的動機是我想知道在插入/刪除命令(立即執行)之前表格有多少個記錄,以及在插入/刪除操作後它包含多少條記錄。
我想將過程的日誌存儲在另一個表(一種日誌表)中,該表保持跟蹤從正在操作的表中插入/刪除的行數。
例如
PROCEDURE_NAME OP_TYPE RUN_DATE RECORDS_BEFORE RECORDS_AFTER
Name of the procedure Type of Operation Performed 1103929 1112982
程序體。
create or replace procedure vector as
begin
-- select count(*) from some_table
execute immediate 'delete from some_table
where trunc(creation_date) >= trunc(sysdate) - 7';
execute immediate 'insert into log_table values
(''Procedure Name'',''Insert'', sysdate,''....'')';
-- select count(*) from some_table
execute immediate 'insert into some_table ....';
execute immediate 'insert into log_table values
(''Procedure Name'',''Insert'', sysdate,''....'')';
-- select count(*) from some_table
end vector;
基本要求:我希望將some_table的count(*)插入到log_table中。
請根據您的預期行爲顯示您正在使用的程序並定義「無法使用」;你觀察到了什麼行爲;以及產生了什麼,如果有的話。 – 2014-08-29 13:45:19
你需要擴大一點你想到的是什麼。如果你想得到一些受DML語句影響的記錄,可以使用'SQL%ROWCOUNT'隱式遊標屬性。爲了獲得之前的記錄數(爲什麼?),執行任何DML,您需要查詢一個表。 – 2014-08-29 13:47:00