0

我有一张销售表:

    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) 

我正在尝试将随机生成的数据插入到销售表中。我正在为 oracle 使用 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 是 sales 表中的外键,但目前 despatch 表是空的,当我尝试将数据插入任一表时,我无法导致一个表需要另一个表中的数据。我最终收到此错误消息:

PL/SQL: ORA-02289: sequence does not exist 
4

1 回答 1

0

您不能选择 FROM

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

尝试:

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;

顺便说一句,您确定要在这里使用笛卡尔积吗,也许错过了一些连接?

于 2009-08-24T05:27:29.297 回答