oracle 函数生成流水号
2015-09-06 09:34
495 查看
code_base 表
create table CODE_BASE
(
code VARCHAR2(20),
vdate VARCHAR2(20),
seq NUMBER
)
CREATE OR REPLACE FUNCTION create_code
(p_code varchar2,p_length number) return VARCHAR2 as PRAGMA AUTONOMOUS_TRANSACTION;
v_count number;
v_code varchar2(40);
v_lock code_base%rowtype;
begin
select count(1)
into v_count
from code_base c
where c.code = p_code
and c.vdate = to_char(sysdate, 'yymmdd');
dbms_output.put_line(v_count) ;
if v_count < 1 then
insert into code_base(code,vdate,seq)
values(p_code,to_char(sysdate, 'yymmdd'),1);
end if;
select * into v_lock from code_base c where c.code = p_code
and c.vdate = to_char(sysdate, 'yymmdd') for update;
select c.code||c.vdate||lpad(c.seq, p_length, 0) into v_code from code_base c where c.code = p_code
and c.vdate = to_char(sysdate, 'yymmdd');
update code_base c
set c.seq=c.seq+1
where c.code = p_code and c.vdate = to_char(sysdate, 'yymmdd');
commit;
return v_code;
end;
create table CODE_BASE
(
code VARCHAR2(20),
vdate VARCHAR2(20),
seq NUMBER
)
CREATE OR REPLACE FUNCTION create_code
(p_code varchar2,p_length number) return VARCHAR2 as PRAGMA AUTONOMOUS_TRANSACTION;
v_count number;
v_code varchar2(40);
v_lock code_base%rowtype;
begin
select count(1)
into v_count
from code_base c
where c.code = p_code
and c.vdate = to_char(sysdate, 'yymmdd');
dbms_output.put_line(v_count) ;
if v_count < 1 then
insert into code_base(code,vdate,seq)
values(p_code,to_char(sysdate, 'yymmdd'),1);
end if;
select * into v_lock from code_base c where c.code = p_code
and c.vdate = to_char(sysdate, 'yymmdd') for update;
select c.code||c.vdate||lpad(c.seq, p_length, 0) into v_code from code_base c where c.code = p_code
and c.vdate = to_char(sysdate, 'yymmdd');
update code_base c
set c.seq=c.seq+1
where c.code = p_code and c.vdate = to_char(sysdate, 'yymmdd');
commit;
return v_code;
end;
相关文章推荐
- mysql,oracle,sql server,sybase数据库数据模拟器java,支持各种数据库,夸平台
- Missing artifact com.oracle:ojdbc14:jar:10.2.0.3.0
- Oracle查看LogMiner的详解
- oracle模糊查询优化
- 高级SQL优化(一) ——《12年资深DBA教你Oracle开发与优化——性能优化部分
- 数据库分页大全(oracle利用解析函数row_number高效分页)
- Oracle的A*M*命名缩写解释
- Oracle中dblink 的使用方法
- Oracle中常出现的错误信息及解决方案
- Oracle实现数据同步
- oracle 两表关联时,年月条件的写法引起的巨大性能的差异
- oracle分页查询
- 手工删除Oracle 12C数据库实例
- 查询oracle中所有用户信息
- Oracle 数据库表空间碎片查询和整理
- JDBC 连接 Oracle/MySql 数据库 不定期 小栗子...
- Oracle CDC(Change Data Capture)概述
- Oracle 常用的一些函数
- oracle在没
- oracle数据文件被误删除后无法启动数据库的解决办法