表名是Scores.
执行以下操作是否正确?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
Run Code Online (Sandbox Code Playgroud) 我正在为Oracle数据库编写一些迁移脚本,并且希望Oracle有类似MySQL的IF EXISTS构造.
具体来说,每当我想在MySQL中删除表时,我都会这样做
DROP TABLE IF EXISTS `table_name`;
Run Code Online (Sandbox Code Playgroud)
这样,如果表不存在,DROP则不会产生错误,脚本可以继续.
Oracle是否有类似的机制?我意识到我可以使用以下查询来检查表是否存在
SELECT * FROM dba_tables where table_name = 'table_name';
Run Code Online (Sandbox Code Playgroud)
但是把它与a绑在一起的语法DROP正在逃避我.
我有这样的代码:
DECLARE
e_not_exist EXCEPTION;
PRAGMA EXCEPTION_INIT(e_not_exist, -942);
car_name VARCHAR2(20);
BEGIN
select name_of_factory into car_name from car where car_id = 1;
dbms_output.put_line(car_name);
EXCEPTION
when e_not_exist then
dbms_output.put_line('Table or view does not exist');
when OTHERS then
dbms_output.put_line(to_char(SQLCODE));
END;
Run Code Online (Sandbox Code Playgroud)
实际上,我的表名是CARS但不是CAR.但oracle不处理此异常并给我一个错误ORA-00942:表或视图不存在.我该如何处理这个异常?