网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.SQL Server数据库sa密码相关问题.
.剖析SQL Server 2005中的报告服务.
.存储过程编写经验和优化措施.
.手工卸载SQL Server 2000数据库.
.用SQL Server为Web浏览器提供图像.
.在SQL Server 中使用SQLDMO.
.用存储过程几个最直接的好处.
.将sql server中的自动增长序列,.
.讲解SQL Server定时作业job的设置.
.全文本检索的应用(2).
.ASE锁模式:AllPages DataPages .
.全文索引—CONTAINS语法.
.怎样用SQL 2000 生成XML .
.深入浅出SQL教程之SELECT语句的自.
.SQL Server 2005数据库备份和恢复.
.MS SQL Server 2005 开发之分页存.
.SQL Server 2008实现高可用性.
.两台SQLServer数据同步解决方案(.
.SQL Server日志文件总结及日志满.
.SQL Server 2005中三种插入XML数.

一个写的很不错的获取单据编号存储过程

发表日期:2008-3-12


获取单据编号的存储过程:

示例:


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

上一篇:讲解SQL 2000的Collection排序规则 人气:2070
下一篇:深入讲解"database link"的设置和使用 人气:997
浏览全部存储过程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐