Sql server 用于基于firstname和lastname生成代码的SQL Server存储过程

Sql server 用于基于firstname和lastname生成代码的SQL Server存储过程,sql-server,sql-server-2008,sql-server-2005,stored-procedures,procedures,Sql Server,Sql Server 2008,Sql Server 2005,Stored Procedures,Procedures,我不熟悉SQL Server存储过程。我想知道如何编写这个存储过程。情况是: 该过程将firstname和lastname作为参数,在此基础上,它获取lastname的第一个字母或firstname和第一个字母,并在其末尾附加一个数字,然后返回此字符串。如果数据库中已经存在该字符串,它将递增该数字并返回该字符串 例1: firstname: abc lastname: def output: ad001 例2: firstname: pqr lastname: mno

我不熟悉SQL Server存储过程。我想知道如何编写这个存储过程。情况是:

该过程将firstname和lastname作为参数,在此基础上,它获取lastname的第一个字母或firstname和第一个字母,并在其末尾附加一个数字,然后返回此字符串。如果数据库中已经存在该字符串,它将递增该数字并返回该字符串

例1:

firstname: abc    
lastname: def    
output: ad001
例2:

firstname: pqr    
lastname: mno    
output: pm001
例3:

firstname: aaa    
lastname: ddd
output: ad002 
(在这种情况下,输出是
ad002
而不是
001
,因为值
ad001
已经存在于示例1创建的数据库中)

对此问题的任何帮助都将不胜感激。谢谢。

更新)
您可以在程序中使用此逻辑:

Declare
   @firstname varchar(10)= 'aaa',    
   @lastname varchar(10)=  'ddd',
   @output varchar(20)

insert into name_table 
   select 
      @firstname, 
      @lastname,
      substring(@firstname,1,1)+
      substring(@lastname,1,1)
      +RIGHT('000'+cast(COALESCE(max(substring(output,3,4)),0)+1 as varchar) ,4)
   from 
      name_table 
   where 
      output like substring(@firstname, 1, 1) + substring(@lastname, 1, 1) + '%'


select * from name_table

生成下一个编号的零件有问题。如果最后一个数字是
0009
,会发生什么情况?显然,你的代码。如果还没有特定字母组合的记录呢?在您的查询中,在这种情况下,MAX()的计算结果将为NULL,并且。