2009-08-24 9 views
0

Ich habe einen Verkaufstisch:Fehler 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) 

ich zufällig generierten Daten in die Verkauf Tabelle einzufügen versuchen. Ich benutze iSQL plus für Oracle. Dies sind nur Testdaten, die ich erstellen muss. ich das folgende Skript die Daten zu generieren:

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)); 

Ende; /

Aber wenn ich das tue, wird die folgende Fehlermeldung:

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

FEHLER in Zeile 9: ORA-06550: Zeile 9, Spalte 21: PL/SQL: ORA-00933: SQL Befehl beendet nicht richtig ORA-06550: Zeile 2, Spalte 2: PL/SQL: SQL-Anweisung ignoriert.

Was habe ich falsch gemacht?

Ich habe gerade festgestellt, dass die DESP_ID ein Fremdschlüssel innerhalb der Verkaufstabelle ist, aber zur Zeit ist die Versandtabelle leer und wenn ich versuche, Daten in eine der beiden Tabellen einzufügen, kann ich nicht eine Tabelle von den Daten benötigen der andere Tisch. Ich am Ende diese Fehlermeldung bekommen:

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

mögliches Duplikat von [ora-00933: SQL-Befehl wurde nicht ordnungsgemäß beendet] (http://StackOverflow.com/questions/1319992/ora-00933sql-command-not-properly-ended) –

+0

Dies ist ein Duplikat von [http : //stackoverflow.com/questions/1319992/ora-00933sql-command-not-properly-ended] (http://stackoverflow.com/questions/1319992/ora-00933sql-command-not-properly-ended) nein? –

Antwort

0

Sie können nicht wählen Sie aus

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

Versuchen:

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; 

BTW, sind Sie sicher, dass Sie ein Kartesisches Produkt wollen hier, vielleicht einige Beitritt ist verpasst?

+0

Kartesisch? Ähm, was heißt das? –

+0

Dies ist ein Cross-Join oder kartesischer beizutreten. Sehen Sie hier: http://en.wikipedia.org/wiki/Join_(SQL)#Cross_join –

+0

Wie würde ich Daten in eine Tabelle laden, wenn noch keine der Fremdschlüssel in die Tabelle geladen ist? –