RE: [PHP] Stored Procedure returns nothing on ROLLBACK
| From: | Ligaya A. Turmelle | Date: | Mon, 15 Jan 2007 04:09:59 +0000 |
| Subject: | RE: [PHP] Stored Procedure returns nothing on ROLLBACK | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-247094@lists.php.net to get a copy of this message | ||
Have you tried it with PDO?
Respectfully,
Ligaya Turmelle
-----Original Message-----
From: Philip Thompson [mailto:prthomp@uark.edu]
Sent: Saturday, January 13, 2007 1:36 AM
To: php General List
Subject: Re: [PHP] Stored Procedure returns nothing on ROLLBACK
On Jan 11, 2007, at 5:53 PM, Chris wrote:
> Philip Thompson wrote:
>> On Jan 10, 2007, at 6:36 PM, Chris wrote:
>>> Philip Thompson wrote:
>>>> Hi.
>>>> I have been experiencing MSSQL woes lately. I have a stored
>>>> procedure that I call in PHP using mssql_* functions. In my
>>>> procedure, I have a transaction that rolls back on failure and
>>>> commits on success (of course). If it commits, I get the proper
>>>> return value (int) and the appropriate output parameters.
>>>> However, if it rolls back, I get NOTHING... even if I try to return
>>>> an error code (int) after the ROLLBACK TRANSACTION statement. The
>>>> output parameter also does not get set upon rollback.
>>>> Is there a way to grab the error even in a rollback? or at least
>>>> return something besides an empty string/int? I would like to know
>>>> what error message to provide the user/admin.
>>>> SQL Server 2000, PHP 5.1.6, ntwdblib.dll version 8.00.194
>>>
>>> Does it work outside of php? That is - you run it manually in mssql
>>> (whatever tools that has) you get the proper codes?
>> Yes, it works perfectly from the server and returns the expected
>> outcome. It's as though PHP sees the 'rollback' and automatically
>> assumes that the whole thing failed... so why return a value or
>> output parameters. Weird, I know. Any other suggestions?
>
> Can you show us the part of the code that deals with the rollback?
>
> If you are issuing a rollback yourself:
>
> $result = mssql_query("rollback transaction");
>
> then you need to handle that yourself because that's treated as a
> separate query.
>
> If you're not doing that (the transaction is rolling itself back),
> then I'm out of ideas :)
I'm calling a stored procedure, not running the query from my code.
So yes, I have a statement in my procedure that has ROLLBACK
TRANSACTION. It's just odd because I know it works as a script on the
server, but PHP doesn't recognize it properly, IMHO. I would almost
be so presumptuous to say that it's a bug. But before I go that
direction, I wanted to see if anyone had a similar experience. If
not, I'll go ahead and think about reporting a bug.
Thanks,
~Phil
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php