首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00933: SQL命令未正确结束

ORA-00933: SQL命令未正确结束
EN

Stack Overflow用户
提问于 2011-01-27 18:15:55
回答 4查看 7.8K关注 0票数 1

我在Oracle中得到了这个错误:

ORA-00933: SQL命令未正确结束 为 如果存在ownername.seq_name,则滴序;

我为什么要看到这个?

EN

回答 4

Stack Overflow用户

发布于 2011-01-27 18:18:15

IF EXISTS命令中的DROP SEQUENCE子句不存在。

可以使用PLSQL块忽略错误:

代码语言:javascript
复制
SQL> DECLARE
  2     sequence_doesnt_exist EXCEPTION;
  3     PRAGMA EXCEPTION_INIT(sequence_doesnt_exist, -2289);
  4  BEGIN
  5     EXECUTE IMMEDIATE 'DROP SEQUENCE seq_name';
  6  EXCEPTION
  7     WHEN sequence_doesnt_exist THEN NULL;
  8  END;
  9  /

PL/SQL procedure successfully completed
票数 4
EN

Stack Overflow用户

发布于 2011-01-27 18:18:35

问题是“如果存在”在Oracle中不起作用。使用:

代码语言:javascript
复制
drop sequence ownername.seq_name;
票数 1
EN

Stack Overflow用户

发布于 2011-01-27 18:22:08

正如其他人提到的,IF存在在DROP SEQUENCE命令上不起作用。

要测试序列是否存在,需要检查适当的视图:

序列

代码语言:javascript
复制
SELECT * 
  FROM USER_SEQUENCES
 WHERE sequence_name = ?

序列

代码语言:javascript
复制
SELECT * 
  FROM DBA_SEQUENCES
 WHERE sequence_name = ?

序列

代码语言:javascript
复制
SELECT * 
  FROM ALL_SEQUENCES
 WHERE sequence_name = ?

示例:

代码语言:javascript
复制
BEGIN
   FOR i IN (SELECT sequence_name 
               FROM USER_SEQUENCES
              WHERE sequence_name = ?) 
   LOOP
     EXECUTE IMMEDIATE ('DROP SEQUENCE '|| i.sequence_name);
   END LOOP;
END;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4820183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档