SQL - 在另一个存储过程中使用存储过程的结果

时间:2011-11-09 01:08:57

标签: sql stored-procedures

我有这样的事情:

Create Procedure GetStockNumber
@Barcode int

As

Select CodStock from TBL_Stock
Where barcode = @barcode 

(比方说,Select的结果是8)

好的简单:D

BUTTT!我想在另一个SP中使用该SP(GetStockNumber)的结果(8)。 像这样:

Create procedure Blablabla
@Quantity int

As

Update TBL_Stock
Set Quantity = Quantity - @Quantity 
Where CodStock = [THE RESULT OF THE SP (GetStockNumber)]

在这种情况下,对于这个例子,它将是8。

那我怎么能这样做呢?

**

使用Icarus提到的2º方法解决

**

1 个答案:

答案 0 :(得分:3)

您有几种不同的选择:

1)从第一个存储过程返回输出参数。

Create Procedure GetStockNumber
@Barcode int ,
@CodStock int OUTPUT

As

Select @CodStock = CodStock 
from TBL_Stock
Where barcode = @barcode 

使用它:

DECLARE @CodStock int

EXEC GetStockNumber @BarCode, @CodStock OUTPUT

Update TBL_Stock
Set Quantity = Quantity - @Quantity 
Where CodStock = @CodStock

2)将存储过程转换为返回值的函数。

CREATE FUNCTION GetCodStock(@BarCode INT) RETURNS INT
AS
 BEGIN
   RETURN (SELECT CodStock
             FROM TBL_Stock
            Where barcode = @barcode)
 END

使用它:

Update TBL_Stock
Set Quantity = Quantity - @Quantity 
Where CodStock = dbo.GetCodStock(@BarCode)