网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  快速掌握一个获取单据编号存储过程示例     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:128次  录入:管理员--2008-04-09  
 

【赛迪网-it技术报道】获取单据编号的存储过程:

create table [dbo].[billno](
    [id] [int] identity(1,1) not null,
    [billname] [varchar](20) collate chinese_prc_ci_as not null,
    [maxno] [int] null,
    [maxdate] [varchar](20) collate chinese_prc_ci_as null,
    [prefix] [varchar](20) collate chinese_prc_ci_as null,
    [numbit] [int] null constraint [df_billno_numbit]  default ((0)),
    [style] [varchar](50) collate chinese_prc_ci_as null,
    [memo] [text] collate chinese_prc_ci_as null,
    [createdate] [datetime] null constraint [df_billno_createdate]  default (getdate()),
    [editdate] [datetime] null,
    [state] [int] null constraint [df_billno_state]  default ((0)),
 constraint [pk_billno] primary key clustered 
(
    [id] asc
)with (ignore_dup_key = off) on [primary]
) on [primary] textimage_on [primary]

go

create procedure [dbo].[p_getbillno] --产生按年月日排列的档案号
    @billname varchar(20),
    @no varchar(20) output, --为产生的档案号
    @numbit int = 4 --编号位数

as 
    declare @maxno int,
            @maxdate varchar(20),
            @prefix varchar(20),
            @xnumbit int,
            @currdate varchar(12),
            @fill_zero int,
            @imaxno int

    set @fill_zero = 100000000
    set @currdate = convert(varchar(8), getdate(),112)

    select @maxno = maxno, @maxdate = maxdate, @prefix = prefix, 

  @xnumbit = numbit from billno with(xlock) where billname = @billname 
    if @@rowcount <> 1 return -1

    if @xnumbit <> 0 set @numbit = @xnumbit 

    if @maxdate <> @currdate or @maxdate is null or @maxno is null
        set @imaxno = 1
    else
        set @imaxno = @maxno + 1

    update billno
         set maxno = @imaxno, maxdate = @currdate, editdate = getdate() 
      where billname = @billname
    if @@rowcount <> 1 return -1

    set @no = coalesce(@prefix, '') + @currdate + right(cast(@fill_zero + @imaxno as
    varchar), @numbit) 

    return 1

 
 
上一篇: 机器异常关闭重起后出现ora-19809错误    下一篇: oracel监听器启动后为什么会自动停掉
  相关文档
如何在oracle层次查询中给siblings排序 04-28
oracle 11g最有特点的五大特性都有哪些 01-28
"oracle"闪回功能恢复偶然丢失的数据 (1) 02-27
轻松掌握jdbc操纵Oracle数据库lob字段 09-29
如何判断一个字符串的内容是否是数值 04-03
详细讲解oracle中isnumeric的三种实现 03-06
数据库应用系统的开发具体分为哪几个阶段 (1) 03-04
如何使用“排序哈希簇”来提高查询速度 01-24
如何使用pl/sql读取数据库中的blob对象 03-27
从自动备份中恢复控制文件和spfile文件 11-22
Oracle-Decode()函数和CASE语句的比较 06-03
oracle 10g schedule job的常用操作 05-13
如何为用户提供回滚操作时间的准确评估 01-29
怎样在oracle里用存储过程定期分割表 (1) 01-25
由浅入深讲解oracle数据库的备份与恢复 05-14
基于已被证实的oracle高可用性技术maa 03-14
轻松掌握"lag"与"lead"分析函?的用法 02-29
oracle数据库内存参数调优技术个人总结 09-03
Oracle数据库删除两表中相同数据的方法 06-10
讲解oracle移动数据文件到新分区的过程 03-11
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息