In a procedure, I want to do logic unit 1, doesn't matter if it fails, execute logic unit 2
this seems like a typical try-catch scenario. but how can I do it in pl/sql?
create or replace
PACKAGE BUILD_PKG
AS
PROCEDURE reset_seq_and_truncate_tbl(
p_seq_name IN VARCHAR2,
p_table_name IN VARCHAR2 );
END BUILD_PKG;
/
create or replace
PACKAGE BODY BUILD_PKG
AS
BEGIN
PROCEDURE reset_seq_and_truncate_tbl(
p_seq_name IN VARCHAR2,
p_table_name IN VARCHAR2 )
IS
l_val NUMBER;
BEGIN
BEGIN
EXECUTE immediate 'truncate table ' || p_table_name;
EXCEPTION
WHEN OTHERS
THEN dbms_output.put_line(SQLCODE);
END;
BEGIN
EXECUTE immediate 'alter sequence ' || p_seq_name || ' increment by 1 minvalue 0';
EXCEPTION
WHEN OTHERS
THEN dbms_output.put_line(SQLCODE);
END;
END reset_seq_and_truncate_tbl;
END BUILD_PKG;
as you can see the second Exception block cause the problem.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…