PHP在For Each中执行Mssql存储过程

时间:2014-03-19 16:30:31

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

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

我应该制作递归函数吗?并且只有在输出为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;

    }

}

1 个答案:

答案 0 :(得分:1)

在循环外返回时尝试相同的操作;)

第一次到达时,函数退出,所以没有其他任何操作。

如果要在发生错误时停止执行,可以使用例外机制。