代码之家  ›  专栏  ›  技术社区  ›  chama

如何使用windows命令脚本从存储过程中捕获返回值?

  •  1
  • chama  · 技术社区  · 14 年前

    我正在编写一个调用存储过程的命令脚本。该存储过程返回一个我稍后在脚本中需要的值。我有没有办法把这个值转换成某种变量?

    提前谢谢!

    3 回复  |  直到 14 年前
        1
  •  2
  •   animuson    13 年前

    在windows cmd shell中,这可以通过sqlcmd调用上的for循环来完成。通常只有在查询返回1条记录时。

    FOR /F %%A IN ('sqlcmd <query paramters>') DO SET MYCMDVARIABLE=%%A
    

    它可以为多个列配置,但始终返回SQL返回集中最后一行的值。

        2
  •  0
  •   Andrea Turri    14 年前

    我使用以下代码调用存储过程并检索其返回值。代码创建一个临时存储过程,该过程接受两个输入参数,并通过返回值返回它们的和。如果存储过程执行查询,请确保在尝试访问返回值之前通过sqlsrv_next_result处理所有可用的结果。

    我希望这些信息能帮助你..

    代码如下:

    $conn = sqlsrv_connect('.\SQLExpress', array('Database'=>'Northwind'));
    
    $sql = "CREATE PROCEDURE #ReturnParam (@p1 int, @p2 int) AS
            RETURN @p1 + @p2";
    $stmt = sqlsrv_query($conn, $sql);
    
    $sql = '{? = CALL #ReturnParam(?, ?)}';
    $returnVariable = -1;
    $inputVariable1 = 18;
    $inputVariable2 = 24;
    
    $params = array(array($returnVariable, SQLSRV_PARAM_OUT),
                    array($inputVariable1, SQLSRV_PARAM_IN),
                    array($inputVariable2, SQLSRV_PARAM_IN));
    
    $stmt = sqlsrv_query($conn, $sql, $params);
    
    echo "Return value: ".$returnVariable;
    
        3
  •  0
  •   Cahit    14 年前