【问题标题】:How to fix 'name already being used' error in Oracle SQL?如何修复 Oracle SQL 中的“名称已被使用”错误?
【发布时间】:2019-04-13 01:02:00
【问题描述】:

如何修复 Oracle SQL 中的“名称已被使用”错误?

CREATE TABLE permission (
    user_id           INTEGER NOT NULL,
    device_id         VARCHAR2(20) NOT NULL,
    permission_type   VARCHAR2(20),
    permission_id     INTEGER NOT NULL
)
LOGGING;

ALTER TABLE permission ADD CONSTRAINT permission_pk PRIMARY KEY ( permission_id );

我收到以下错误,

 Error report -
    ORA-00955: name is already used by an existing object
    00955. 00000 -  "name is already used by an existing object"
    *Cause:    
    *Action:

【问题讨论】:

  • 你检查permission或permission_pk是否已经存在了吗?
  • permission 可能已经存在。先放下吧。
  • 修复这个选择其他对象名称。在您的情况下 - 其他表名,因为您可以在错误报告中看到 - 它存在。您也可以先删除此表,然后使用您的代码创建新表。
  • 哪个语句产生错误?第一个还是第二个?

标签: sql oracle ddl


【解决方案1】:

您可以更改代码。

   declare 
    duplicate_table EXCEPTION;
    PRAGMA EXCEPTION_INIT (duplicate_table , -955);
    begin

    execute  immediate 'CREATE TABLE permission (
        user_id           INTEGER NOT NULL,
        device_id         VARCHAR2(20) NOT NULL,
        permission_type   VARCHAR2(20),
        permission_id     INTEGER NOT NULL
    )
    LOGGING' ;

    exception
     WHEN duplicate_table  THEN
        dbms_output.put_line('Duplicate table');
        --null;

    end;


SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 15 10:10:01 2019

Copyright (c) 1982, 2017, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

SQL> set serveroutput on;
SQL> declare
  2  duplicate_table EXCEPTION;
  3  PRAGMA EXCEPTION_INIT (duplicate_table , -955);
  4  begin
  5
  6  execute  immediate 'CREATE TABLE permission (
  7      user_id           INTEGER NOT NULL,
  8      device_id         VARCHAR2(20) NOT NULL,
  9      permission_type   VARCHAR2(20),
 10      permission_id     INTEGER NOT NULL
 11  )
 12  LOGGING' ;
 13
 14  exception
 15   WHEN duplicate_table  THEN
 16      dbms_output.put_line('Duplicate table');
 17      --null;
 18
 19  end;
 20  /

Duplicate table

PL/SQL procedure successfully completed.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多