2009-08-24 7 views
0

У меня есть продажи таблица:ошибки ORA-06550 ORA-00933

Name   Null?  Type 
SALE_ID   NOT NULL NUMBER(4) 
SALE_DATE     DATE 
NO_OF_PRODS    NUMBER(4) 
PROD_ID   NOT NULL NUMBER(4) 
CUST_ID   NOT NULL NUMBER(4) 
DESP_ID   NOT NULL NUMBER(4) 
SALE_RECEIPT NOT NULL NUMBER(5) 

Я пытаюсь вставить случайным образом сгенерированных данных в таблицу продаж. Я использую iSQL plus для оракула. Это всего лишь тестовые данные, которые я должен создать. я запускаю следующий сценарий для создания данных:

begin 
insert into sales 
select sale_id_seq.nextval, 
     sysdate, 
     trunc(dbms_random.value(000,999)), 
     p.prod_id, c.cust_id 
     FROM dba_xy.product p, dba_xy.customer c, 
     desp_id_seq.nextval, 
      trunc(dbms_random.value(0000,9999)); 

конца; /

Но когда я делаю, появляется следующее сообщение об ошибке:

trunc(dbms_random.value(0000,9999)); 
       * 

Ошибка в строке 9: ORA-06550: Строка 9, колонка 21: PL/SQL: ORA-00933 ВЭ: SQL команда не выполнена должным образом ORA-06550: строка 2, столбец 2: PL/SQL: заявление SQL игнорируется.

Что я сделал не так?

Я только понял, что DESP_ID является внешним ключом в таблице продаж, но в настоящее время таблица отправки пуста, и когда я пытаюсь вставить данные в обе таблицы, я не могу заставить одну таблицу нуждаться в данных из другой стол. Я в конечном итоге получить это сообщение об ошибке:

PL/SQL: ORA-02289: sequence does not exist 
+0

Возможный дубликат [ora-00933: команда SQL не выполнена должным образом] (http://stackoverflow.com/questions/1319992/ora-00933sql-command-not-properly-ended) –

+0

Это дубликат [http : //stackoverflow.com/questions/1319992/ora-00933sql-command-not-properly-ended] (http://stackoverflow.com/questions/1319992/ora-00933sql-command-not-properly-ended) no? –

ответ

0

Вы не можете выбрать из

FROM dba_xy.product p, dba_xy.customer c, 
    desp_id_seq.nextval, 
     trunc(dbms_random.value(0000,9999)); 

Try:

insert into sales 
(select 
    sale_id_seq.nextval, 
    sysdate, 
    trunc(dbms_random.value(000,999)), 
    p.prod_id, 
    c.cust_id, 
    desp_id_seq.nextval, 
    trunc(dbms_random.value(0000,9999)) 
    FROM dba_xy.product p, dba_xy.customer c; 

Кстати, вы уверены, что вы хотите декартово произведение здесь, возможно, некоторые соединение пропущено?

+0

Декартово? Что это значит? – 2009-08-24 05:31:01

+0

Это крест-соединение или декартовое соединение. Посмотрите здесь: http://en.wikipedia.org/wiki/Join_(SQL)#Cross_join –

+0

Как я могу загружать данные в таблицу, когда один из внешних ключей еще не загрузил в нее данные? – 2009-08-24 06:44:04

 Смежные вопросы

  • Нет связанных вопросов^_^