将存储过程结果保存在变量中

时间:2017-12-14 18:48:40

标签: php sql-server stored-procedures

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

因此,当调用此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 enter image description here

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

我真的不知道该怎么做了。我将非常感谢你的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

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