postgresql 日期生成流水号
--表结构
DROP TABLE if exists public.sys_tabid;
CREATE TABLE public.sys_tabid
(
id serial NOT NULL ,
type character varying(50),
code character varying(50) NOT NULL,
seed integer,
date date
);
--测试数据
insert into sys_tabid(type,code,seed,date) values
('订单PO','',1,'2017-06-27'),
('仓库','',1,'2017-06-27'),
('入库PO','',1,'2017-06-27'); --公共函数
CREATE OR REPLACE FUNCTION public.p_sys_getid(
p_type character varying DEFAULT '仓库'::character varying,
p_seed integer DEFAULT 1)
RETURNS integer AS
$BODY$
DECLARE
--SET NOCOUNT ON;
DECLARE
v_d date := now()::date;
v_code INT := 0;
v_rowcount INTEGER; BEGIN
-- select * from p_sys_getid();
<<tran>>
loop
<<TRY>>
loop
--IF NOT EXISTS(SELECT 1 FROM [Sys_TabID] WITH(ROWLOCK) WHERE [type]=@type AND [date]=@d) IF NOT EXISTS(SELECT 1 FROM Sys_TabID WHERE type = p_type AND date=v_d) then
INSERT INTO Sys_TabID(type,code,seed,date) values(p_type,'',p_seed,v_d);
GET DIAGNOSTICS v_rowcount = ROW_COUNT;
end if; IF v_rowcount > 0 then
v_code=1;
exit tran;
END IF; select code::int+seed::int from Sys_TabID into v_code WHERE type = p_type AND date = v_d;
UPDATE Sys_TabID SET code = v_code WHERE type = p_type AND date = v_d;
GET DIAGNOSTICS v_rowcount = ROW_COUNT;
IF v_rowcount>0 then
exit tran;
end if; exit TRY;
exit tran; END LOOP;
END LOOP; RETURN v_code; END;
$BODY$
LANGUAGE plpgsql --查询函数
CREATE OR REPLACE FUNCTION public.select_tlsh(
letter character varying DEFAULT 'DGR'::character varying,
p_type character varying DEFAULT '订单PO'::character varying)
RETURNS character varying AS
$BODY$
DECLARE
--letter varchar(10)='DGR';
id int;
TLSH VARCHAR(20);
BEGIN
select * from P_Sys_GetID(p_type,1) into id;
TLSH = letter||to_char(now()::timestamp,'YYYYMMDD')||right((1000000+id)::varchar,6);
RETURN TLSH;
END;
$BODY$
LANGUAGE plpgsql
postgresql 日期生成流水号的更多相关文章
- java,mysql触发器,redis生成流水号(yyyyMM000)
最近又遇到需要根据日期生成流水号的业务,然后记录了几种生成方法,一个是通过java代码,一个是数据库的触发器,还有是通过redis.下面是代码: 通过java生成简易流水: /** * 通过日期和生成 ...
- BarTender怎样同时打印自动日期和流水号?
大多数条形码中都会含有日期和数量信息,而且大部分都是两者兼具.有些使用BarTender软件的小伙伴,不知道怎么同时打印自动日期和流水号,即条形码中兼有自动日期和序列号,且它们都能根据打印的变化而变化 ...
- Oracle生成流水号函数
一.参考 1:日期范围上 smalldatetime的有效时间范围1900/1/1~2079/6/6 datetime的有效时间范围1753/1/1~9999/12/31 2:精准度上 smallda ...
- java中生成流水号的一个例子(使用关系型数据库)
在实际的开发中,可能会有根据一定的规则生成流水号的需求(比如根据根据公司编码和日期生成4位流水号)我们可以把公司和日期联合起来作为一个业务编码,把这个业务编码和序列的值存储到数据库中,每次需要生成流水 ...
- Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用
Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...
- log4net使用(包括单个文件和按日期生成多个文件)
1.log4net生成单个文件 直接将这段代码考到config中即可用 <log4net> <!--定义输出到文件中--> <appender name="Lo ...
- Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用
Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...
- SQL Server 存储过程生成流水号
SQL Server利用存储过程生成流水号 USE BiddingConfig SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO -- =========== ...
- powerdesigner连接postgresql数据库生成pdm及word文档
1.准备软件: powerdesigner165与postgresql的驱动:psqlodbc_11_01_0000 2.安装并破解完成powerdesigner165 参看链接:https://ww ...
随机推荐
- MapReduce时mapping内存不足
17/11/07 16:53:50 INFO mapreduce.Job: Job job_1510042506570_0007 failed with state KILLED due to: MA ...
- 自学web前端能不能找到一份前端的工作吗
关于自学web前端能不能通过社招找到一份互联网公司web前端开发的工作,有无数的人问出这样的问题,答案没有标准的,只能从概率去考虑.有的人可以,有的人不可以,有的人自学就业的概率就是高,有的概率就是低 ...
- 深度学习实践-强化学习-bird游戏 1.np.stack(表示进行拼接操作) 2.cv2.resize(进行图像的压缩操作) 3.cv2.cvtColor(进行图片颜色的转换) 4.cv2.threshold(进行图片的二值化操作) 5.random.sample(样本的随机抽取)
1. np.stack((x_t, x_t, x_t, x_t), axis=2) 将图片进行串接的操作,使得图片的维度为[80, 80, 4] 参数说明: (x_t, x_t, x_t, x_t) ...
- 3sum 求三数之和等于0,不允许重复
https://leetcode.com/problems/3sum/ 套路比较常见了,最重要的是去重.还是没法一次通过. class Solution { public: vector<vec ...
- pod 更新慢解决方案
pod install --verbose --no-repo-update pod update --verbose --no-repo-update
- TensorFlow初探之简单神经网络训练mnist数据集(TensorFlow2.0代码)
from __future__ import print_function from tensorflow.examples.tutorials.mnist import input_data #加载 ...
- Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图(转载)
Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图 2017年04月05日 10:53:13 李学凯 阅读数:104997更多 所属专栏: Intellij Idea ...
- python内置函数 和模块函数总结
1.内置函数(无需导入)long() 函数将数字或字符串转换为一个长整型.len() 统计元素个数print() 打印,输出input() 输入,或阻塞程序运行type 获取类型range 产生连续的 ...
- 微信小程序问题---数据传输长度为 1275870 已经超过最大长度 1048576
开发微信小程序时,遇到数据传输长度为 1095538 已经超过最大长度 1048576的问题. 这是setData时操作数据过大导致,一般出现在请求返回数据过大,我们又将这个数据一次性用setData ...
- linux卸载erlang
rpm -qa | grep erlang | xargs rpm -e --nodeps