循环查询SQL
我是SQL的新手 我想使用下面的for循环查询将数据插入表中。 但无法确定问题所在循环查询SQL,sql,database,oracle,for-loop,Sql,Database,Oracle,For Loop,我是SQL的新手 我想使用下面的for循环查询将数据插入表中。 但无法确定问题所在 declare cursor mac is SELECT DISTINCT(MAC) FROM DEVICES; cmd varchar2(200); begin for c in mac loop cmd := 'INSERT INTO MAC VALUES(DEVICES_ID_SEQ.nextVal,'||c.MAC||',"ABC","123")'; execute immediate cmd; end
declare
cursor mac is SELECT DISTINCT(MAC) FROM DEVICES;
cmd varchar2(200);
begin
for c in mac loop
cmd := 'INSERT INTO MAC VALUES(DEVICES_ID_SEQ.nextVal,'||c.MAC||',"ABC","123")';
execute immediate cmd;
end loop;
end;
对于现有表中的每个MAC,我想插入新记录 这不需要光标 只需运行:
INSERT
INTO mac
SELECT DEVICES_ID_SEQ.nextval, mac, 'abc', 123
FROM (
SELECT DISTINCT
mac
FROM devices
)
如果不需要,请不要使用游标或PL/SQL!看看Quassnoi的答案,它的速度更快,代码更少。学习使用SQL以基于集合的方式做事。在这种情况下也不需要动态SQL。少的另一个很好的例子是多。OP 1使用不需要的动态SQL;2可能有一个错误,MAC地址是字符串,因此应该在动态SQL中引用;3有点容易溢出仅200个字符的字符串缓冲区;4使用PL/SQL和一个游标,但无论如何都不需要它。