0

我正在尝试存储查询结果并将其存储在@Parameter 中,然后我想在 INSERT 查询中使用它。我是 SP 的新手,我不知道我这样做是否正确或是否可能。

CREATE Proc [dbo].[spTrans]
@Queue int,
@Parameter int = (SELECT TOP 1 TicketNumber + 1 from tblData WHERE QueueId = @Queue)
AS
BEGIN  
   INSERT INTO tblData (QueueId,Parameter) VALUES (@Queue,@Parameter)
END
4

1 回答 1

2

为什么不将您的子查询移动到您的过程中,如下所示:

CREATE Proc [dbo].[spTrans]
  @Queue int
AS
BEGIN  
  DECLARE @Parameter int 
  SELECT TOP 1 
    @Parameter = TicketNumber + 1 
  FROM tblData 
  WHERE QueueId = @Queue;

  INSERT INTO 
    tblData (QueueId,Parameter) 
  VALUES (@Queue,@Parameter);
END

如果您需要可选地传递@Parameter 然后执行以下操作:

CREATE Proc [dbo].[spTrans]
  @Queue int
, @Parameter int
AS
BEGIN  
  IF @Parameter = 0 
    SELECT TOP 1 
      @Parameter = TicketNumber + 1 
    FROM tblData 
    WHERE QueueId = @Queue;

  INSERT INTO 
    tblData (QueueId,Parameter) 
  VALUES (@Queue,@Parameter);
END
于 2013-07-11T15:00:59.347 回答