根据多行插入上的另一列将非标识序列分配给字段

时间:2015-08-07 22:50:19

标签: sql-server sql-server-2008 stored-procedures

我在SQL Server 2008中有一个SQL表,为此目的包括Patient_id(主要),Custno(Char),Recip_Id(Int)

1 - C01731 -    1  
2 - C01731 -    2  
3 - C01731 -    3  
4 - C01732 -    1  
5 - C01732 -    2  
6 - C01732 -    3  
7 - C01732 -    4  
8 - C01733 -    1  
9 - C01733 -    2  

因此,当我只需要插入一条记录时,我就会使用这个存储过程......

Create PROCEDURE [dbo].[JR_SP_NW_InsertRecord]  
(  
    @custno varchar(MAX),  
    @modwho varchar(MAX)  
)  
AS  
BEGIN  
    SET NOCOUNT ON;  
--Declare @retval int  
Declare @rownum int  

SET @rownum = (select MAX(recip_id)+1 From UsersMailingData where custno = @custno)  

    INSERT INTO dbo.UsersMailingData(custno,Recip_id,modify, modifywho)
    Values(@custno, @rownum, GETDATE(), @modwho)  

    select Cast(SCOPE_IDENTITY() as int)  
END

我的问题是我需要一个存储过程,它将根据@custno查看Recip_Id列中的最高编号,然后在插入多行时将每个插入的行增加1。从没有问题的记录被删除时,recip_id也可能存在间隙。

1 个答案:

答案 0 :(得分:0)

我假设您的问题是您使用select语句插入行,在这种情况下,您可以使用row_number()为行指定编号,如下所示:

div(ui-view="ticketList")

div(ui-view="ticketComments")

div(ui-view="ticketDetail")

colname是一个列,您希望为新行计算数字。

您的@rownum fetch也有一个错误,当客户没有行时它不起作用。