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

推荐订阅源

S
Securelist
O
OpenAI News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Google Online Security Blog
Google Online Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News and Events Feed by Topic
S
Security Affairs
SecWiki News
SecWiki News
Project Zero
Project Zero
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
P
Palo Alto Networks Blog
L
LINUX DO - 最新话题
H
Hacker News: Front Page
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
K
Kaspersky official blog
The GitHub Blog
The GitHub Blog
I
InfoQ
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
B
Blog
IT之家
IT之家
AWS News Blog
AWS News Blog
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
N
News and Events Feed by Topic
Security Latest
Security Latest
美团技术团队
C
Check Point Blog
WordPress大学
WordPress大学
T
Tenable Blog
S
Security @ Cisco Blogs
Last Week in AI
Last Week in AI
博客园 - 聂微东
月光博客
月光博客
博客园 - 【当耐特】
S
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Secure Thoughts
Schneier on Security
Schneier on Security
C
Cisco Blogs
Cyberwarzone
Cyberwarzone

博客园 - 彭浩

[导入][转载][收藏][新]正则表达式30分钟入门教程[2007-8-3 V2.21] [导入].NET 2.0中,配置文件app.config的读写(VS2005,C#) [导入]如何进入程序设计的领域 [导入]用ASP设计购物推车 [导入]XHTML 1.0 参考 [导入]JS代码--HTML自动转为JS代码 [导入]文本输入限制 [导入]JS代码--选择日期 [导入]JS代码--Checkbox控制输入框 [导入]小本创业者的致胜法宝! [导入]五种提高 SQL 性能的方法 [导入]等了好几天宽带也算是开通了。。。但却发现铁通的宽带不能用BT了!!! [导入]ASP+Access数据库的终极安全大法18则(原创) [导入] [ASP.NET] Session 详解 [导入]Asp.NET常用函数 [导入]Jmail发信函数 [导入]非洲捕蟒全过程(组图) [导入]今天在试着装VS.NET2005了---Visual Studio 2005 Beta2 简体中文版发布,中文论坛开通 [导入]vbscript错误代码及对应解释大全/VBScript 语法错误
[导入]获取表中新记录(下一条记录)的主键值的存储过程
彭浩 · 2006-11-06 · via 博客园 - 彭浩

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

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

文章来源:http://www.cnblogs.com/Dove/archive/2006/11/06/552035.html