惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
U
Unit 42
博客园 - 【当耐特】
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
美团技术团队
雷峰网
雷峰网
小众软件
小众软件
G
Google Developers Blog
GbyAI
GbyAI
Jina AI
Jina AI
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Fortinet All Blogs
Vercel News
Vercel News

博客园 - gz.net

gridview绑定问题 - gz.net - 博客园 jsp数据库大全 login Microsoft Windows SharePoint Services ASP.NET程序中常用代码汇总(一) - gz.net - 博客园 ASP.NET动态生成HTML页面 日语的初次认识 日语的初次认识 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度? 检测远程URL是否存在的三种方法 ---转自孟子 Eclipse快速上手指南 自己动手用c#写控件 代价 五种提高 SQL 性能的方法 js教程 HTML教程 HTML教程 存储过程编写经验三 存储过程经验二
好久没来了。共享一个自动生成编号的存储过程
gz.net · 2006-06-25 · via 博客园 - gz.net

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER  procedure pGetNewKey
  @cTableName varchar(20) = 'tOrderForm',
  @cKeyField varchar(15) = 'cCode',
  @iKeyLength integer = 12,
  @cResult varchar(15) output
as
  declare @cCode varchar(20),@cMax varchar(20),@cSerial varchar(4), @cSQL varchar(150), @cZero varchar(8)

  create table #a(cMaxCode varchar(10) null)

  if @iKeyLength>10
  begin
    set @cZero=substring('000000000000000',1,@iKeyLength-8)
    set @cSQL=
      'insert into #a select max(substring('+@cKeyField+',9,4)) cMaxCode from '+@cTableName+
      ' where substring('+@cKeyField+',1,8)=convert(char(8),getdate(),112)'
    Exec(@cSQL)

    select @cMax = cMaxCode from #a
   
    if @cMax is null
      set @cMax = '0'

    set @cSerial = convert(varchar(4),convert(int,@cMax)+1)

    set @cCode=convert(char(8),getdate(),112)+stuff(@cZero,@iKeyLength-8+1-len(@cSerial),len(@cSerial),@cSerial)
  end
  else
  begin
    set @cZero=substring('000000000000000',1,@iKeyLength)
    set @cSQL=
      'insert into #a select max('+@cKeyField+') cMaxCode from '+@cTableName

    Exec(@cSQL)

    select @cMax = cMaxCode from #a  

    if @cMax is null
      set @cMax = '0'

    set @cSerial = convert(varchar(4),convert(int,@cMax)+1)

    set @cCode=stuff(@cZero,@iKeyLength+1-len(@cSerial),len(@cSerial),@cSerial)
  end

  set @cResult = @cCode

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO