如何编写仅在满足条件的情况下运行的SQL语句?

时间:2019-09-18 07:34:58

标签: sql oracle if-statement

我想编写一个过程,将记录从SYS.AUD $复制到AUDIT_USER.AUDIT_HISTORY_TABLE,然后截断SYS.AUD $。我希望仅在复制/插入进展顺利的情况下执行Truncate。

是这样的:

CREATE OR REPLACE PROCEDURE proc_copy_records_and_then_delete
    IS
    BEGIN
     DECLARE number_of_records NUMBER(900000000) :=SELECT COUNT(*) FROM SYS.AUD$;
     insert into AUDIT_USER.AUDIT_HISTORY_TABLE select * from SYS.AUD$; 
     IF number_of_records <= rows_inserted THEN
     COMMIT;
     TRUNCATE TABLE SYS.AUD$;
     /

所以我只想在将记录插入到另一个表中的情况下才截断SYS.AUD $表。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样做。我没有测试此解决方案,但是它应该可以让您了解如何做到这一点

def checkForHash(h, fname):
    with open(fname) as f:
        for i, line in enumerate(f):
            if h == line:
                return i
    return -1

x = '0000000A0E3B9F25FF41DE4B5AC238C2D545C7A8:15'
checkForHash (x, 'testfile.txt')