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 ...
随机推荐
- 嵌入式linux——点亮led灯(二)
刚才在jz2440板子上写了一个点亮中间led的程序,前前后后十几分钟才好.最终代码 本节内容: 1. 汇编点灯 2. C点灯 3. 参数选择点灯 4. 按键点灯 1. 汇编点灯 .text .glo ...
- 纠结了一下午的问题:运行opencv的HoughLinesP函数出错
问题描述:检测出的直线数量显然不对,非常巨大.程序运行崩溃. 解决办法:在添加附加依赖项时,Dubug模式只添加opencv_world310d.lib,Release模式下只添加opencv_wor ...
- PSR-1 基本代码规范
基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”("MU ...
- ubuntu中文乱码解决
首先,安装中文支持包language-pack-zh-hans: $ sudo apt-get install language-pack-zh-hans 然后,修改/etc/environment( ...
- 安装USB驱动时报错“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”
今天在安装一个USB设备的时候报错“Windows已找到设备的驱动程序软件,但在试图安装它时遇到错误”. 这个错误的描述是“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”. 事实上,这个 ...
- 从servlet规范说起
servlet规范 1 servlet 3.1规范 1.1 What is servlet A servlet is a JavaTM technology-based Web component, ...
- linux dd 本地挂载
losetup /dev/loop0 /root/test.img mkfs.ext4 /dev/loop0 mount /dev/loop0 /data
- python入门(十三):面向对象(继承、重写、公有、私有)
1. 三种类定义的写法 class P1:#定义类 加不加()都可以 pass class P2(): #带(),且括号中为空,类定义 pass ...
- npm 命令
npm instal moduleName [-g] :安装模块,有 -g 或 --global 是全局安装 npm install -g cnpm --registry=https://regis ...
- 【笔记】Python基础四:迭代器和生成器
一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ...