fmk Sat Jan 11 22:17:44 2003 EDT Modified files: (Branch: PHP_4_3) /php4/ext/mssql php_mssql.c Log: MFH Index: php4/ext/mssql/php_mssql.c diff -u php4/ext/mssql/php_mssql.c:1.86.2.8 php4/ext/mssql/php_mssql.c:1.86.2.9 --- php4/ext/mssql/php_mssql.c:1.86.2.8 Thu Jan 9 03:28:18 2003 +++ php4/ext/mssql/php_mssql.c Sat Jan 11 22:17:44 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mssql.c,v 1.86.2.8 2003/01/09 08:28:18 fmk Exp $ */ +/* $Id: php_mssql.c,v 1.86.2.9 2003/01/12 03:17:44 fmk Exp $ */ #ifdef COMPILE_DL_MSSQL #define HAVE_MSSQL 1 @@ -1187,7 +1187,7 @@ /* Release remaining results */ do { retvalue = dbresults(result->mssql_ptr->link); - } while (retvalue != NO_MORE_RESULTS && retvalue != FAIL); + } while (retvalue == SUCCEED); zend_list_delete(Z_RESVAL_PP(mssql_result_index)); RETURN_TRUE; @@ -2020,11 +2020,12 @@ } /* }}} */ -/* {{{ proto int mssql_execute(int stmt) +/* {{{ proto int mssql_execute(int stmt [, bool skip_results = false]) Executes a stored procedure on a MS-SQL server database */ PHP_FUNCTION(mssql_execute) { - zval **stmt; + zval **stmt, **skip; + zend_bool skip_results = 0; int retvalue,retval_results; mssql_link *mssql_ptr; mssql_statement *statement; @@ -2035,9 +2036,12 @@ int ac = ZEND_NUM_ARGS(); batchsize = MS_SQL_G(batchsize); - if (ac !=1 || zend_get_parameters_ex(1, &stmt)==FAILURE) { + if (ac < 1 || ac > 2 || zend_get_parameters_ex(1, &stmt, &skip)==FAILURE) { WRONG_PARAM_COUNT; } + if (ac == 2) { + skip_results = Z_BVAL_PP(skip); + } ZEND_FETCH_RESOURCE(statement, mssql_statement *, stmt, -1, "MS SQL-Statement", le_statement); @@ -2059,7 +2063,7 @@ * set into the row buffer. */ result=NULL; - if (retval_results==SUCCEED) { + if (retval_results == SUCCEED) { if ( (retvalue=(dbnextrow(mssql_ptr->link)))!=NO_MORE_ROWS ) { num_fields = dbnumcols(mssql_ptr->link); if (num_fields <= 0) { @@ -2078,11 +2082,17 @@ result->num_rows = _mssql_fetch_batch(mssql_ptr, result, retvalue TSRMLS_CC); result->statement = statement; } + if (skip_results) { + do { + retval_results = dbresults(mssql_ptr->link); + } while (retval_results == SUCCEED); + + _mssql_get_sp_result(mssql_ptr, statement TSRMLS_CC); + } + } + else if (retval_results == NO_MORE_RESULTS || retval_results == +NO_MORE_RPC_RESULTS) { + _mssql_get_sp_result(mssql_ptr, statement TSRMLS_CC); } - /* Try to get output parameters. Won't work if there are more record sets - * in the batch until they are all retrieved with mssql_next_result(). - */ - _mssql_get_sp_result(mssql_ptr, statement TSRMLS_CC); if (result==NULL) { RETURN_TRUE; /* no recordset returned ...*/ @@ -2113,7 +2123,7 @@ /* Release remaining results */ do { retvalue = dbresults(statement->link->link); - } while (retvalue != NO_MORE_RESULTS && retvalue != FAIL); + } while (retvalue == SUCCEED); zend_list_delete(Z_RESVAL_PP(mssql_statement_index)); RETURN_TRUE;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php