postgresql 存储过程 把一个表的部分数据插入另一个表中(条件:传入的某些参数作为检索条件并且可能为空值)
来源:互联网 发布:c多线程编程实例 pdf 编辑:程序博客网 时间:2024/05/21 09:29
说明:
把一个表1的部分数据插入另一个表2中根据id,mac作为检索条件,但是id、mac有一个为空。如果id为空,先从另一个表2中查出id值,insert 表1中,如果不为空时,直接插入。
CREATE OR REPLACE FUNCTION 存储过程名(
in_id integer,in_mac text,
参数2,
参数3)
RETURNS boolean AS$BODY$
DECLARE
v_count int;
v_select int;
num int;
v_number int;
BEGIN
IF in_id IS NULL THEN
UPDATE 表名1
SET 字段 = 参数2
WHERE 表1字段 = in_mac;
GET DIAGNOSTICS v_count = ROW_COUNT; //获取执行sql语句成功的行数;
IF v_count = 0 THEN
SELECT sid INTO num
FROM 表2
WHERE 表2 里字段 = in_mac;
GET DIAGNOSTICS v_select = ROW_COUNT; //获取执行sql语句成功的行数;
IF v_select = 0 THEN
RETURN FALSE;
ELSE
INSERT
INTO 一个表名(
sid,
mac,
其他字段)
VALUES(
num,
in_mac,
其他参数
);
RETURN TRUE;
END IF;
ELSE
RETURN TRUE;
END IF;
ELSE
UPDATE 表1
SET mac = in_mac,
其他字段
WHERE sid = in_id;
GET DIAGNOSTICS v_number = ROW_COUNT; //获取执行sql语句成功的行数;
IF v_number = 0 THEN
INSERT
INTO 表1(
sid,
mac,
其他字段)
VALUES(
in_id,
in_mac,
其他参数
);
RETURN TRUE;
END IF;
END IF;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
0 0
- postgresql 存储过程 把一个表的部分数据插入另一个表中(条件:传入的某些参数作为检索条件并且可能为空值)
- 【Sql Server】使用触发器把一个表中满足条件的数据部分字段插入到另一个表中
- 把一张表中的数据即一个List作为查询另一张表的条件参数
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题
- 关于Java调用Oracle存储过程时,传入动态参数作为in语句条件的问题
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题
- 按条件查询某个表中某些字段的值(精确查询)的通用存储过程
- mybatis中传入一个List或Map集合作为查询条件的参数
- 复制表数据——把一个dataTable中符合条件的信息添加到另一个新的DataTable中
- mybatis插入一个对象后获取表中自增的主键Id并且传入到插入的的对象中,方便将对象中其他属性赋值给其他以前表主键Id作为非空字段的表
- 利用存储过程把两个表的数据插入到一个新表中(存储过程中写两个游标)
- mysql模糊查找:一个表T2的某列数据,作为另一个表T1查找条件进行模糊查找
- 判断存储过程查询条件参数为空
- 存储过程中动态条件的添加 where条件 in条件中字符串参数
- oracle存储过程中传入日期参数,插入到表
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- 把一个表的数据插入到另一个表
- 通过存储过程从一个表中每次取十分钟的数据插入到另一个表
- 提高web应用性能之JavaScript性能调优
- iOS懒加载
- IOS开发笔记12-指针(下)
- Android Layout_weight 解密
- ubuntu下 deb包安装方法
- postgresql 存储过程 把一个表的部分数据插入另一个表中(条件:传入的某些参数作为检索条件并且可能为空值)
- 视图控制器的一些方法的执行顺序
- 【ZOJ 3690】 Choosing number (矩阵快速幂)
- 杭电ACM2016-数据的交换输出
- 调整SQLServer2000运行中数据库结构
- HDU 1003 Max Sum
- MySQL数据导入导出全解
- Session和Cookie
- iOS Swift+Foundation学习笔记