相关疑难解决方法(0)

如果SQL Server中存在表,如何删除表?

表名是Scores.

执行以下操作是否正确?

IF EXISTS(SELECT *
          FROM   dbo.Scores)
  DROP TABLE dbo.Scores
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

678
推荐指数
12
解决办法
111万
查看次数

Oracle:如果表存在

我正在为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正在逃避我.

sql oracle sql-drop

322
推荐指数
7
解决办法
45万
查看次数

Oracle错误处理

我有这样的代码:

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:表或视图不存在.我该如何处理这个异常?

sql oracle plsql ora-00942

4
推荐指数
2
解决办法
7100
查看次数

标签 统计

oracle ×2

sql ×2

ora-00942 ×1

plsql ×1

sql-drop ×1

sql-server ×1

t-sql ×1