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 @ 2012-02-08 08:54  IsaacZhang  阅读(396)  评论(0编辑  收藏  举报