Ami*_*ain 6 postgresql for-loop record
我正在尝试使用 for...循环将数据从一个表插入到 postgres 中的另一个表。下面给出了该方法。
DO LANGUAGE PLPGSQL $$
DECLARE
data record;
BEGIN
FOR data IN SELECT * FROM forall_data
LOOP
INSERT INTO for_loop values data;<br>
END LOOP;
END;
$$
Run Code Online (Sandbox Code Playgroud)
我已使用记录进行行迭代,但无法找到如何将该“数据”插入“for_loop”表中。当我运行此代码时,出现以下错误:
ERROR: syntax error at or near "data"
LINE 9: INSERT INTO for_loop values data;
^
Run Code Online (Sandbox Code Playgroud)
这是我的两张桌子。
create table forall_data(
nid numeric(15,0)not null,
name varchar(15) not null,
city varchar(10) not null,
contact numeric(11,0) not null
);
create table for_loop(
nid numeric(15,0)not null,
name varchar(15) not null,
city varchar(10) not null,
contact numeric(11,0) not null
);
Run Code Online (Sandbox Code Playgroud)
我应该在这里尝试什么将该“数据”记录插入“for_loop”表中?提前致谢。
“data”是无类型记录,因此我必须提及列名来检索该记录的值。
DO LANGUAGE PLPGSQL $$
DECLARE
data record;
BEGIN
FOR data IN SELECT * FROM forall_data
LOOP
INSERT INTO for_loop values (data.nid,data.name,data.city,data.contact);
END LOOP;
END;
$$
Run Code Online (Sandbox Code Playgroud)
但使用 %rowtype 或表类型更灵活,无需提及列名即可从变量中检索列值
DO LANGUAGE PLPGSQL $$
DECLARE
data forall_data; --- or data forall_data%rowtype
BEGIN
FOR data IN SELECT * FROM forall_data
LOOP
INSERT INTO for_loop select (data).*;
END LOOP;
END;
$$
Run Code Online (Sandbox Code Playgroud)
干杯:)
使用此代码:
DO LANGUAGE PLPGSQL $$
DECLARE
rec record;
BEGIN
FOR rec IN SELECT * FROM budzet.forall_data
LOOP
INSERT INTO budzet.for_loop(nid, name , city , contact)
VALUES (rec.nid, rec.name , rec.city , rec.contact);
END LOOP;
END;
$$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7877 次 |
| 最近记录: |