Freitag, 19. März 2010

Oracle: DROP TABLE OR SEQUENCE IF EXIST als Prozedur


CREATE OR REPLACE
PROCEDURE drop_object
(
ObjName IN VARCHAR2
) IS
counter NUMBER := 0;
to_drp VARCHAR2(200) := UPPER(ObjName);
drp_stmt VARCHAR2(200) := NULL;

BEGIN

SELECT COUNT(*)
INTO counter
FROM user_tables
WHERE table_name = to_drp;
IF counter = 1
THEN drp_stmt := 'Drop Table ' || to_drp;
EXECUTE IMMEDIATE drp_stmt;
END IF;

SELECT COUNT(*) INTO counter
FROM user_sequences
WHERE sequence_name = to_drp;
IF counter = 1 THEN
drp_stmt := 'DROP SEQUENCE ' || to_drp;
EXECUTE IMMEDIATE drp_stmt;
END IF;

END DROP_OBJECT;
/

Der Aufruf der Prozedur könnte z.B. so erfolgen:


CALL drop_object('t_test');
CREATE TABLE t_test
(
test_id NUMBER, uid_text VARCHAR2(80)
)

Keine Kommentare:

Kommentar veröffentlichen