Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环查询SQL_Sql_Database_Oracle_For Loop - Fatal编程技术网

循环查询SQL

循环查询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

我是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 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和一个游标,但无论如何都不需要它。