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'

你可能感兴趣的:(code)