【问题标题】:Save Stored Procedure result in variable将存储过程结果保存在变量中
【发布时间】:2017-12-14 18:48:39
【问题描述】:

我一直在寻找如何获得我正在处理的存储过程的结果的方法。

所以当这个 SP 被调用时,它会以一个自动递增的数字返回一系列数字。 ex. 0000002743

我不是创建 SP 的人,我是 SQL Server 的初学者,但是当我尝试“修改”它以至少了解它的构成时,我有这个:

ALTER PROCEDURE [dbo].[New_BatchCode] AS
DECLARE @x NUMERIC
UPDATE SysVars SET @x = BatchCode = BatchCode + 1
SELECT BatchCode = REPLACE(STR(@x,10),' ','0')

在 SQL Server 中,我只需运行EXEC [dbo].[New_BatchCode],就会显示结果。但是在 PHP 中,我无法让它工作。我尝试了以下方法:

1

$conn = $this->delphi_connect();
    $batch_code_query = "EXEC [dbo].[New_BatchCode];";
    $stmt3 = sqlsrv_query($conn,$batch_code_query); 
    if( $stmt3 === false )  
    {  
         echo "Error in executing statement 3.\n";  
         die( print_r( sqlsrv_errors(), true));  
    }
    if ($stmt3)  {
        while ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) {
            $ret[] = $row;
        }
    }
    sqlsrv_free_stmt( $stmt3);  
    sqlsrv_close( $conn); 
    print_r($ret);
    die();

2

$conn = $this->delphi_connect();
    $batch_code_query = "{call [dbo].[New_BatchCode]}";
    $stmt3 = sqlsrv_query($conn,$batch_code_query); 
    if( $stmt3 === false )  
    {  
         echo "Error in executing statement 3.\n";  
         die( print_r( sqlsrv_errors(), true));  
    }
    if ($stmt3)  {
        while ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) {
            $ret[] = $row;
        }
    }
    sqlsrv_free_stmt( $stmt3);  
    sqlsrv_close( $conn); 
    print_r($ret);
    die();

我的 SQL Server

我的目标是以某种方式存储执行 SP 的结果并将其插入另一个查询。喜欢$batch_code = [result]

我真的不知道该怎么办了。我会很感激你的帮助。谢谢!

【问题讨论】:

  • 哪一行的结果?当您更新表时,它将更新所有行,因此您需要检查INSERTED 表并检测操作是INSERT 还是UPDATE,这些值将存储在一个表中,因为它是多个值而不仅仅是一个.
  • 嗨@Sami!它只返回一个名为BatchCode 的列。我需要得到那个值。我会把上面的图片放上来。
  • BatchCode 列的哪一行?没有WHERE,所以它会更新所有行,这意味着多个值。
  • @Sami 道歉。我不确定我是否正确,但由于存储过程只给了我一个值,所以没有地方。
  • SP 给你一个随机值,因为没有WHERE 或任何ORDER。我认为做你想做的事情的唯一方法是TRIGGER,你可以在其中返回所有插入的值。

标签: php sql-server stored-procedures


【解决方案1】:

您可以通过在表上创建TRIGGER 来解决此问题以进行更新,然后您可以使用#Temporal 表或创建一个表(根据需要),您可以在其中存储来自INSERTED 表的插入值并为他们做任何你需要做的事情。

【讨论】:

  • 我会尝试根据您的建议进行处理。我还是一个初学者,所以我真的不知道该怎么做。我从没想过这会很复杂(以我的知识水平)。
猜你喜欢
  • 2011-06-03
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
相关资源
最近更新 更多