[egenix-users] Impossible to correct execute stored procedure
using cursors
M.-A. Lemburg
mal at egenix.com
Wed Nov 5 17:25:08 CET 2008
M.-A. Lemburg wrote:
> On 2008-11-05 15:55, Sirio Capizzi wrote:
>>
>> M.-A. Lemburg ha scritto:
>>> mxODBC 3.0 tries to use the ODBC 3.x API where possible,
>>> so that may explain why you are seeing different behavior
>>> compared to mxODBC 2.0.
>>>
>>> The SQL Server 2000 ODBC driver is rather old, so it's possible
>>> that it doesn't support the ODBC 3.x API all that well.
>>>
>>> However, our tests pass just fine for that driver as well, but
>>> AFAIK we don't use cursors in the tested stored procedures, so
>>> that's something to add to the test suite.
>>>
>> Very interesting... It is possible to force mxODBC to use only the ODBC
>> 2.0 API? There are newer drivers for SQL Server 2000?
>
> No that's not possible without patching mxODBC.
>
> The ODBC manager will normally translate between the application and the
> driver, however, it only does this if the driver itself advertises itself
> as being a 2.0 driver.
>
> We'll setup a few new tests to try to reproduce the problem.
We've added a test similar to what you're doing to out suite,
but cannot reproduce the problem:
Loaded mx.ODBC.Windows version 3.0.2
Testing package mx.ODBC.Windows version: 3.0.2
compiled with Unicode support
using Python version: 2.5
Test suite:
Connecting to the database.
Connected to DSN
DSN: sqlserver; Database: master;
Server: PICASSO; User: dbo;
DBMS: Microsoft SQL Server; Version: 08.00.0760;
ODBC driver: SQLSRV32.DLL 03.85.1132; ODBC Version: 03.52
String encoding used by mxODBC: utf-8
StoredProcedureTest: executing create table mxODBC0001 (col1 int, col2 int)
StoredProcedureTest: executing
CREATE PROCEDURE sp_mxODBC0001 AS
DECLARE @var1 int, @var2 int
DECLARE cursor1 CURSOR FOR
SELECT col1, col2 FROM mxODBC0001
ORDER BY col1
OPEN cursor1
FETCH NEXT FROM cursor1
INTO @var1, @var2
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @var1 AS col1, @var2 AS col2
FETCH NEXT FROM cursor1
INTO @var1, @var2
END
CLOSE cursor1
DEALLOCATE cursor1
SP: Cursors in procedures : function supported
Disconnecting.
Note that we're using the same ODBC driver version. Please check
whether the SQL Server version also matches yours.
>>> Could you send us an ODBC trace that shows the crash (ie. stops
>>> after the crash) ?
>> Of course, you will find it in the attachment. Thank you for your help.
>
> Thanks.
The log indicates that the cursor state becomes invalid after
having called the procedure. However, that should normally not
result in a segfault.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Nov 05 2008)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
More information about the egenix-users
mailing list