SQL Server将查询结果传递给存储过程中的变量

时间:2013-07-11 14:51:51

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

我正在尝试存储查询结果并将其存储在@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

1 个答案:

答案 0 :(得分:1)

为什么不将子查询移动到这样的过程中:

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