ora-00933:SQL命令未正确结束
我有以下代码:ora-00933:SQL命令未正确结束,sql,oracle,plsql,ora-00933,ora-00001,Sql,Oracle,Plsql,Ora 00933,Ora 00001,我有以下代码: 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;
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与插入到Dispatch表中的新数据链接起来。我已将prod_name设置为产品表中的唯一键,将prod_id设置为主键,并已将两者设置为Dispatch表中的外键约束。我需要将prod_名称包含到Dispatch表中,以便表的读者能够更好地了解需要查找的prod_名称等,而不仅仅是提供prod_id,这对他们来说毫无意义。但也许我在想,我不需要发送表中的prod_id。
请帮忙
从Dispatch表中删除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行中,是否会因为插入相同的行两次而导致唯一约束冲突?是应该在insert语句的where子句中使用“i”,还是确实要将行插入两次 您的第一个语句有两个FROM子句,这就是为什么会出现语法错误
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;
您的ORA-00933错误是由格式不正确的SELECT语句引起的:
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;
…应在何时:
SELECT DESP_ID_SEQ.nextval,
DBMS_RANDOM.string('U',5),
TRUNC(DBMS_RANDOM.value(0000,9999)),
t.prod_id,
t.prod_name
FROM dba_xy.product t;
您缺少分隔prod_id
和prod_name
列的逗号,并且在错误的位置有一个来自dba_xy.product的冗余声明
也就是说,dba_xy.dispatch表应该只包含prod_id。如果您需要提供一个可读的数据版本,我建议您构造一个。例如:
CREATE VIEW despatch_vw AS
SELECT t.prod_id,
p.prod_name
FROM dba_xy.despatch t
JOIN dba_xy.product p ON p.prod_id = t.prod_id
我尝试运行您的视图代码,结果出现以下错误:第5行的join dba_xy.product p*错误:ORA-00905:缺少关键字my bad-我忘记了实际的连接条件。现在尝试查看代码。