Fork me on GitHub

SQL主键Code字符串拼接

复制代码
 1 set ANSI_NULLS ON
 2 set QUOTED_IDENTIFIER ON
 3 GO
 4 -- ================================================
 5 -- Proc Function : 拼接字符串主键
 6 -- Create Date   : 2012-02-07
 7 -- Update Date   : 2012-02-08
 8 -- Create User   :zhangpan
 9 -- Update User   :
10 -- Description   : 拼接字符串主键--如ZP2012020700001
11 -- Parameter     :@Str 前缀-如ZP
12 --                  @tableName 操作的表名称
13 --                  @primaryName 表字段名称
14 -- ================================================
15 ALTER  PROCEDURE [dbo].[Proc_GetPrimaryKey]
16     @str VARCHAR(4),
17     @tableName VARCHAR(50),
18     @primaryName VARCHAR(50)
19 AS
20 BEGIN
21     --获取上一个数字
22     DECLARE @sql VARCHAR(2000);
23     DECLARE @rightNum INT;
24     DECLARE @NumStr VARCHAR(15);
25     --创建临时表,存储取出的值
26     CREATE TABLE #Tmp(
27         id VARCHAR(15)
28     )
29     --插入临时表
30     SET @sql = 'INSERT INTO #Tmp SELECT top 1 '+@primaryName+' FROM '
31             +@tableName+' ORDER BY '+@primaryName+' DESC'
32     exec (@sql);
33     --设置字符串
34     SET @NumStr = (SELECT TOP 1 id FROM #Tmp);
35     IF @NumStr IS NULL OR @NumStr =''
36     BEGIN
37      SET @NumStr = @str+CONVERT(VARCHAR(8),GETDATE(),112)+'00000'
38     END
39     DROP TABLE #tmp;
40     PRINT @NumStr;
41     --截取最后的数值信息
42     SET @rightNum = SUBSTRING(@NumStr,11,5); 
43     
44     SELECT (@str+CONVERT(VARCHAR(8),GETDATE(),112)+RIGHT('0000'+CONVERT(VARCHAR(5),@rightNum+1),5)) primaryKey;
45     
46 END
47 GO
48 
49 
50 --EXEC [Proc_GetPrimaryKey] 'AC','jdzx_union_Cemetery_Area','area_code'
复制代码
posted @   IsaacZhang  阅读(397)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示