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 ...
随机推荐
- 简介C#读取XML的方式(转)
在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询. XML作用 ...
- 如何在vs2015中编译并配置tesseract4.0
1)安装相关软件: 下载ccpan,把路径放到path(右击电脑,选择“属性”,选择左边的“高级系统设置”,选择“环境变量”,找到“系统变量”里面的“path”,点击“编辑”,选择右边的“新建”,输入 ...
- ArcGIS API for JS 测量线长(各折线段)
这里测量长度主要分为两个方面,一个是在绘制长折线段时,不仅需要显示总线段的长度,还要在各线段的中间显示各折线段的长度:另一个则是在绘制多边形时,不仅需要显示多边形的面积,还需要在各边的中间显示线段长. ...
- nginx配置location总结及rewrite规则写法(转)
一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这 ...
- struts2.5入门
引用链接:https://www.cnblogs.com/qulianqing/p/6627746.html
- win10 开发mfc 64位 ocx控件
问题1.模块“XXX.ocx”加载失败 解决办法:项目--〉属性--〉常规-〉配置类型-〉 动态库(.dll) 修改为 静态库(.lib) 问题2.1>x64\Release\stdafx.o ...
- JS创建一个数组1.求和 2.求平均值 3.最大值 4.最小值 5.数组逆序 6.数组去重 0.退出
rs = require("readline-sync"); let arr = []; console.log("请输入数组的长度:"); let arr_l ...
- 初学python笔记----字符串
---恢复内容开始--- 1.在python中,用引号括起来的都是字符串,引号可以是单引号,也可以是双引号 2.修改字符串的大小写 3.字符串拼接用“+” 4.制表符("\t"), ...
- 记第一次XSS实战
前两天偶然挖到一个XSS,在我低谷期的时候给了我些动力,遂写下这篇博客记录 随手在一个搜索框中测试,发现有反应 观察一下标签,需要">把前面的闭合,然后<a 把后面的标签闭合 结 ...
- pwnable.kr-fd-witeup
登录进远程电脑,看到flag,查看内容,权限不够失败咯,ls -la看看权限. 欧克,fd用户对flag只用可读权限,但是呢,看到fd用户对fd文件有s权限,它指设置使当前在执行阶段具有文件所有者的权 ...