select into 和 insert into select 两种表复制语句之间的差别
select * into 表1 from 表2
insert into 表1(name, no) select name, 123 from 表2;
以上两句都是将 表2 的数据插入到表1,但两句又有区别的。
第一句(select into from)要求目标表(表1)不存在,因为在插入时会自动创建。
第二句(insert into select from)要求目标表(表1)存在,由于目标表已经存在,所以我们除了插入源表(表2)的字段外,还可以插入常量,如例中的:123。
存储过程:要求返回插入影响的行数,从表2查询出来数据插入到表1中,再把表2的那条数据删除,传入参数(参数1,参数2,参数3)参数1为id
CREATE OR REPLACE FUNCTION 存储过程名(
参数1 integer,
参数2 integer,
参数3 text)
RETURNS integer AS
$BODY$
DECLARE
v_count int; \\记录受影响的行数
BEGIN
INSERT INTO 表1(
字段1,
字段2,
字段3
)
SELECT 字段1,
字段2,
123 //插入常量123
FROM 表2
WHERE 字段= 参数1;
GET DIAGNOSTICS v_count = ROW_COUNT; //得到影响的行数
DELETE FROM 表2
WHERE 字段= 参数1;
RETURN v_count;
END
$BODY$
LANGUAGE plpgsql VOLATILE