gpt4 book ai didi

sql - 如何使用存储过程的返回值设置一个值

转载 作者:行者123 更新时间:2023-12-02 05:17:48 24 4
gpt4 key购买 nike

我有一个存储过程 SP1,它接收参数 @param1 并用它做一些事情并返回一个值。

现在我有一个包含两列的表格,比如 C1 和 C2。最初,C1 在每一行上都有不同的值,而 C2 在每一行上都是 0。现在我想用 SP1 返回的值更新 C2,其对应的 C1 值为 @param1。我希望是这样的:

update Table1 set C2 = (exec SP1 @param1=C1)

就像在大多数编程语言中接收函数的返回值一样。

我没有学过任何 SQL,但我做了很多研究,但没有找到任何东西。因此,我们将不胜感激。

最佳答案

创建一个 OUTPUT存储过程中的参数并使用该参数存储值,然后在 Update 语句中使用该参数。像这样的……

DECLARE @OutParam Datatype;

EXECUTE SP1 @param1=C1, @OUT_Param = @OutParam OUTPUT --<--

--Now you can use this OUTPUT parameter in your Update statement.

UPDATE Table1
SET C2 = @OutParam

更新

阅读您的评论后,我认为这就是您尝试将 C1 列的值从表 Table1 传递到存储过程,然后使用存储过程的返回值更新表 1 的相关 C2 列。

为此,最好的方法是创建表类型参数并将 C1 的值作为表传递。 See here有关如何将表传递给存储过程的详细答案。

我还没有测试过但是在这种情况下我想你可以做这样的事情..如果你有一张大 table 我不推荐这种方法。在这种情况下,您最好使用表类型参数过程。

-- Get C1 Values In a Temp Table

SELECT DISTINCT C1 INTO #temp
FROM Table1

-- Declare Two Varibles
--1) Return Type of Stored Procedure
--2) Datatype of C1

DECLARE @C1_Var DataType;
DECLARE @param1 DataType;

WHILE EXISTS(SELECT * FROM #temp)
BEGIN
-- Select Top 1 C1 to @C1_Var
SELECT TOP 1 @C1_Var = C1 FROM #temp

--Execute Proc and returned Value in @param1
EXECUTE SP1 @param1 = @C1_Var

-- Update the table
UPDATE Table1
SET C2 = @param1
WHERE C1 = @C1_Var

-- Delete from Temp Table to entually exit the loop
DELETE FROM #temp WHERE C1 = @Var

END

关于sql - 如何使用存储过程的返回值设置一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22021194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com