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

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
量子位
T
Tailwind CSS Blog
Vercel News
Vercel News
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
U
Unit 42
Engineering at Meta
Engineering at Meta
L
LangChain Blog
大猫的无限游戏
大猫的无限游戏
D
Docker
博客园_首页
P
Proofpoint News Feed
月光博客
月光博客
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Martin Fowler
Martin Fowler
腾讯CDC
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - PENGHAO-X

indows 8上强制Visual Studio以管理员身份运行 jQuery中浏览器版本判断的一个BUG,此BUG已影响到jqModal,thickbox等多个jQuery插件的应用 [注意]你的系统中存在这个BUG吗?(正则表达式验证) SQL 2005 except,intersect [收藏 ]针对IE网页浏览器不同版本解释的CSS或javascript .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON Windows 2003 远程桌面连接出错解决办法。(由于协议错误,会话将被中断。请重新连接到远程计算机。) CSS hack:区分IE6,IE7,firefox ListView 中的一个低级 BUG 全国哀悼日 灰色CSS滤镜 将字符串对转换成字典(临时表)的自定义函数(SQL) [转载][收藏][新]正则表达式30分钟入门教程[2007-8-3 V2.21] .NET 2.0中,配置文件app.config的读写(VS2005,C#) 如何进入程序设计的领域 用ASP设计购物推车 - PENGHAO-X - 博客园 XHTML 1.0 参考 JS代码--HTML自动转为JS代码 - PENGHAO-X - 博客园 文本输入限制 - PENGHAO-X - 博客园 JS代码--选择日期
获取表中新记录(下一条记录)的主键值的存储过程
PENGHAO-X · 2006-11-06 · via 博客园 - PENGHAO-X

在项目中如果数据库表中主键不是使用的自动生成的标识列时
许多表中都需要获取新记录的主键值,每次都需要连接数据库并计算,
所以写了个能适应不同表的存储过程,以及可定义主键前缀及默认长度

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO/*
获得表中新的主键值
调用方法:
    DECLARE @NewId VARCHAR(20)
    EXEC GetNewID 'Customer','CustId','C', 4, @NewId OUT
    SELECT @NewId        
输入参数:
    @TableName 表名
    @KeyName 主键名
    @Prefix 主键前缀
    @Length 表中无数据时的默认长度
输出参数:
    @NewId 返回的新主键值
*/ALTER  PROCEDURE GetNewID
(
    
@TableName NVARCHAR(100),
    
@KeyName NVARCHAR(100),
    
@Prefix NVARCHAR(10),
    
@Length INT,
    
@NewId NVARCHAR(20) OUT
)
AS
BEGIN
SET NOCOUNT ON
    
DECLARE @MaxId VARCHAR(20)
    
DECLARE @Fill NVARCHAR(20)
    
--DECLARE    @NewId VARCHAR(20)
    DECLARE @SQL NVARCHAR(1000)
    
    
IF ((@Prefix IS NULL))
        
SET @Prefix = ''
        
    
SET @Fill = '00000000000000000000'
    
SET @SQL = N'SELECT @MaxId = ISNULL(RTRIM(LTRIM(MAX(' + @KeyName + '))), ''' + LEFT(@Prefix + @Fill@Length+ ''') FROM [' + @TableName + ']'
    
EXEC sp_executesql @SQL,N'@MaxId VARCHAR(20) OUT',@MaxId OUT
 
    
--PRINT 'OUT:'+@MaxId        
    SET @NewId = @Prefix + RIGHT(@Fill + CAST( (RIGHT(@MaxId,LEN(@MaxId)-LEN(@Prefix))+1AS NVARCHAR ), LEN(@MaxId)-LEN(@Prefix))
    
--SELECT @NewId
SET NOCOUNT OFF
ENDGO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO