网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  快速掌握一个获取单据编号存储过程示例     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:129次  录入:管理员--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监听器启动后为什么会自动停掉
  相关文档
使用flashback query 恢复误删除的数据 11-15
解决未找到oracle客户端和网络组件现象 04-22
如何在oracle层次查询中给siblings排序 04-28
使用T-SQL操作面试SQL Server开发人员 07-07
在oracle中添加用户 赋权 修改密码 解锁 05-29
job进程不能启动时间再次停止运行的现象 03-24
oracle用户密码含有特殊字符应当如何处理 (1) 04-03
如何使用ref cursor处理oracle的结果集 03-26
个人经验:怎样杀死"oracle"的死锁进程 02-01
Oracle巧取指定记录以及巧用外关联查询 07-07
Oracle与Access表之间的导入和导出 04-23
解决表空间填充满时出现的ora-1652错误 (1) 04-16
Oracle数据库不同版本间用exp来导数据 09-01
轻松解决oracle xdb的8080端口冲突问题 03-03
帮你完全了解 Oracle 标签安全测试 05-13
非阻塞算法思想在数据库开发中的应用 01-25
oracle ebs 11.5 for linux as4安装心得 08-08
使用_disable_logging即可禁止日志的生成 (1) 05-16
带你深入了解oracle中几个相对特殊的函数 01-31
逐步讲解 Oracle数据库碎片如何整理 05-13
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息