2013-03-20 121 views
0

我使用PLPGSQL要做到这一点,但得到如何插入一条记录到表

记录类型尚未注册

错误这是

一样简单
declare 
    myrecord RECORD; 
begin 
    SELECT myrow as "myrow" INTO myrecord FROM (SELECT 1, 2); 
    INSERT INTO mytable(col1,col2) 
    VALUES (myrecord.*); 
end; 

可以请任何人帮忙吗? 我的postgres版本是8.4

+1

问题:INSERT INTO mytable(col1,col2)values(1,2)'?或者,如果**必须基于选择的INSERT INTO mytable(col1,col2) select 1,2'; – 2013-03-20 15:01:26

+0

必须基于,导致样本不是真实的情况。 在真实情况下,记录是从查询中提取的。 我想保留查询输出的记录结构,而不是为INSERT语句使用查询本身。 – xsubira 2013-03-20 17:29:43

回答

0

有两种有效的方法可以做到这一点。第一个是:

begin 
    INSERT INTO mytable(col1,col2) 
    VALUES (1, 2); 
end; 

二是:

begin 
    INSERT INTO mytable(col1,col2) 
    SELECT 1, 2; 
end; 

当然这些都不需要在PL/pgSQL的块。

顺便说一句,在psql工具中,你可以做\h insert来获取有效的插入表单的列表。这些是手册中的synposes,这是使该工具非常有用的一件事。

+0

你似乎解决了这个问题,而不是问题。 目标正在使用记录。 – xsubira 2013-07-08 08:38:31