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