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

标签 sql stored-procedures

我有这样的东西:

Create Procedure GetStockNumber
@Barcode int

As

Select CodStock from TBL_Stock
Where barcode = @barcode 

(假设Select的结果是8)

好简单:D

屁股!我想在另一个 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。

那么我该怎么做呢?

**

使用伊卡洛斯提到的2°法求解

**

最佳答案

您有几个不同的选择:

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)

关于SQL - 在另一个存储过程中使用存储过程的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059242/

相关文章:

mysql - 将 SQL 查询转换为存储过程

mysql - 无法创建存储函数 - 语法错误?

sql - 将 EXECUTE sp_executesql 结果设置为 sql 中的变量

mysql - SQL - 删除较早日期的所有重复项

SQL查询非重复记录

MySQL : selecting minimum value from one table and country details from another and grouping them according to country code

MySQL存储过程从select语句为多个变量赋值

mysql - 使用 mysql 存储过程查找下一个特定工作日

sql - DynamicSQL 使用 sp_executesql 错误

sql - 如何创建 SQL Server 函数以将子查询中的 "join"多行转换为单个分隔字段?