【问题标题】:PHP Execute Mssql Stored Procedure in For EachPHP 在 For Each 中执行 Mssql 存储过程
【发布时间】:2014-04-26 01:51:01
【问题描述】:

我需要为数组中的每个元素执行一个 mssql 存储过程,我该怎么做... 我这里有一个例子,但它只执行一次。我猜数据库在第一次执行时被锁定,这就是它只执行一次的原因。

我应该创建一个递归函数吗?并且仅在输出为 TRUE 时才运行该程序??

这是我的代码:

    function executeStoreProcedure($movementsArray = array(), $mssql_link) {

    $output;
    $retval;

    $spName = "SDNuevaOperacion";

    var_dump($movementsArray);

    foreach($movementsArray as $movement) {

        $statement = mssql_init("SDNuevaOperacion", $mssql_link);

        $isBinded = mssql_bind($statement, "@PRSLink", $movement["client_id"], SQLINT1);
        $isBinded = mssql_bind($statement, "@UserLogged", $movement["imei"], SQLVARCHAR, false, false, 30);
        $isBinded = mssql_bind($statement, "@AutoInc", $movement["move_id"], SQLINT1);
        $isBinded = mssql_bind($statement, "@Fecha", $movement["move_date"], SQLVARCHAR);
        $isBinded = mssql_bind($statement, "@CantBotEntr", $movement["delivery"], SQLINT1); 
        $isBinded = mssql_bind($statement, "@CantBotRet", $movement["withdrawal"], SQLINT1);
        $isBinded = mssql_bind($statement, "@Pago", $movement["payment"], SQLFLT8); 
        $isBinded = mssql_bind($statement, "@Resultado", $output, SQLVARCHAR, true, false, 2);  

        $retval = mssql_execute($statement);

        $result = $output;

        mssql_free_statement($statement);

        var_dump($retval);
        var_dump($result);

        return $result;

    }

}

【问题讨论】:

    标签: php stored-procedures for-loop recursion sql-server-2000


    【解决方案1】:

    在循环外尝试相同的 return ;)

    第一次到达时,函数退出,所以什么都不做。

    如果你想在发生错误时停止执行,你可以使用异常机制。

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多