Нужна помощь в Oracle 10G Express Edition
-
09-10-2019 - |
Вопрос
Я получил ошибку "ORA-03001: невыполненная функция", когда я пытаюсь вставить запись в таблице ниже. Я искал всю ночь, все еще не повезло. Я использую Oracle10G Express Edition.
create or replace type MajorsType As varray(20) of varchar2(10);
create or replace type studenttype as object (
stuID varchar2(5),
lastName varchar2(15),
firstName varchar2(12),
majors MajorsType)
INSTANTIABLE
NOT FINAL;
create table Student of StudentType (
constraint student_stuID_pk PRIMARY KEY(stuID));
INSERT INTO student values StudentType ('S999', 'Smith', 'John', MajorsType('Math', 'Accounting'));
Решение
Это простая ошибка синтаксиса: пункт о значениях требует, чтобы все обернуто в скобки:
SQL> INSERT INTO student
2 values ( StudentType ('S999', 'Smith', 'John', MajorsType('Math', 'Accounting')))
3 /
1 row created.
SQL>
Это применяется, передаем ли мы несколько скалярных значений или одного типа.
Единственный случай, когда он не применяется, - это вставка в PL/SQL с использованием типа записи. Что не имеет отношения к вашей ситуации, но я упоминаю об этом для полноты.
Вставка переменной записи будет выглядеть примерно так
declare
r23 t23%rowtype; -- record declaration
begin
r23.id := 1;
r23.created := sysdate;
-- insert using record variable
insert into t23
values r23;
end;
Не связан с StackOverflow