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

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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值