POSTGRESQL 存储过程 select into 和 insert into select 两种表复制语句之间的差别

来源:互联网 发布:电子设备审计软件功能 编辑:程序博客网 时间:2024/06/06 07:43

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

0 0
原创粉丝点击