【发布时间】:2010-11-22 03:26:07
【问题描述】:
我有以下代码:
begin
for i in 1..2 loop
insert into dba_xy.despatch
select desp_id_seq.nextval,
dbms_random.string('U',5),
trunc(dbms_random.value(0000,9999)),
prod_id from dba_xy.product
prod_name from dba_xy.product;
end loop;
结束;
当我运行它时,oracle 会给我以下错误消息:
prod_name from dba_xy.product;
*
第 8 行的错误: ORA-06550:第 8 行,第 29 列: PL/SQL: ORA-00933: SQL 命令未正确结束 ORA-06550:第 3 行,第 2 列: PL/SQL:忽略 SQL 语句
我要做的是将现有的 prod_id 和 prod_name 与插入到调度表中的新数据链接起来。我已将 prod_name 设置为 product 表中的唯一键,并将 prod_id 设置为主键,并将两者都设置为 despatch 表中的外键约束。我需要将 prod_name 包含到 despatch 表中,以使表的读者能够更多地了解需要找到什么 prod_name 等,而不是仅仅给出对他们毫无意义的 prod_id。但也许我在想我不需要发送表中的 prod_id 。 请帮忙。
从发货表中删除 prod_id 列后,我更改了我的代码:
begin
for i in 1..2 loop
insert into dba_xy.despatch
select desp_id_seq.nextval,
dbms_random.string('U',5),
trunc(dbms_random.value(0000,9999)),
prod_name from dba_xy.product;
end loop;
结束; /
并且出现以下关于唯一约束的错误消息: 开始 * 第 1 行的错误: ORA-00001: 违反唯一约束 (DBA_XY.PROD_NAME_UC) ORA-06512: 在第 3 行
【问题讨论】:
标签: sql oracle plsql ora-00933 ora-00001