我需要删除在2010年1月1日之前创建的所有表.我在stackoverflow中遇到了一些示例,但没有一个符合我的需要.与主键没有冲突,这是一个好点.它必须在pl/sql中,但sql是可以的,我可以搞清楚.
您可以使用它DBA_OBJECTS来查找在特定日期之前创建的所有表,并使用它来创建类似的字符串 DROP TABLE <TABLE_NAME>.然后你可以EXECUTE IMMEDIATE用来删除表.
DECLARE
V_STRING VARCHAR2(200);
BEGIN
FOR I IN (SELECT *
FROM SYS.DBA_OBJECTS T
WHERE T.OBJECT_TYPE = 'TABLE'
AND T.OWNER = 'USERNAME'
AND T.CREATED < date '2010-01-01') LOOP
V_STRING := 'DROP TABLE ' || I.OBJECT_NAME;
EXECUTE IMMEDIATE V_STRING;
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
如果您只想为自己的用户删除表,USER_OBJECTS则只包含您登录的用户拥有的对象.