我希望为我的Oracle数据库创建一个脚本,用于删除表。如果表不存在,脚本不会以失败退出,而是输出文本:“不存在”。
脚本如下:
我希望能在一个脚本中删除多张表,而且不想重复写这些语句。
有没有什么方法可以将它写成一个"过程(procedure)"或者是"函数(function)",然后传入表名作为参数,在脚本中调用这个"过程"或"函数"呢?
可能会像这样:
脚本如下:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE mytable';
DBMS_Output.Put_Line(' table dropped');
EXCEPTION WHEN OTHERS THEN
IF SQLCODE = -942 THEN
DBMS_Output.Put_Line(' table not exists');
ELSE
DBMS_Output.Put_Line(' Unknown exception while dropping table');
RAISE;
END IF;
END;
我希望能在一个脚本中删除多张表,而且不想重复写这些语句。
有没有什么方法可以将它写成一个"过程(procedure)"或者是"函数(function)",然后传入表名作为参数,在脚本中调用这个"过程"或"函数"呢?
可能会像这样:
drop_table_procedure('mytableA');
drop_table_procedure('mytableB');
或者可能是一个过程,它获取一个未定义大小的列表(例如在Java中:String ...表名):
drop_tables_procedure('mytableA','mytableB');
请给我一些例子。 谢谢!