Ошибка неверного типа данных при создании первичного ключа на существующей таблице - PullRequest
1 голос
/ 08 января 2020

Блок ниже возвращает ошибку ORA-00902: неверный тип данных. У вас есть идеи, где может быть проблема? Заранее спасибо:)

DECLARE
      lv_txt VARCHAR2(32000);
BEGIN
      lv_txt := 'ALTER TABLE INF_AUSBAUPLAENE ADD CONSTRAINT PRIMARY KEY(AUSB_ID)';
      EXECUTE IMMEDIATE lv_txt;
      DBMS_OUTPUT.PUT_LINE('PK Constraint successfuly created.');
EXCEPTION
      WHEN OTHERS THEN
        IF SQLCODE = -02275 THEN
        -- ORA-02275: such a referential constraint already exists in the table
          DBMS_OUTPUT.PUT_LINE('PK AUSB_ID is already used on table "inf_ausbauplaene"');
        ELSE
        migra_log_mechanism.saveline(code_in         => SQLCODE,
                                   text_in         => SQLERRM,
                                   error_line_text => 'Unexpected error occured while executing 
    script');

          RAISE;
        END IF;
END;
/

1 Ответ

2 голосов
/ 08 января 2020

Вам не хватает имени ограничения первичного ключа:

SQL> create table inf_ausbauplaene (ausb_id number);

Table created.

SQL>
SQL> DECLARE
  2        lv_txt VARCHAR2(32000);
  3  BEGIN
  4        lv_txt := 'ALTER TABLE INF_AUSBAUPLAENE ADD CONSTRAINT pk_iabp PRIMARY KEY(AUSB_ID)';
  5        EXECUTE IMMEDIATE lv_txt;                           -- ^^^^^^^
  6  END;                                                      -- this!
  7  /

PL/SQL procedure successfully completed.

SQL>
...