freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
- From: "G." Sumner Hayes <SumnerH AT fool.com>
- To: freetds AT franklin.oit.unc.edu
- Cc: SumnerH AT fool.com
- Subject: Prepared statements w/ the tds protocol
- Date: 14 Mar 2001 17:11:55 -0500
Hello,
I'm working on Python bindings for freetds and I'm stuck on prepared
statements w/ SQL2000. I want to do the moral equivalent of:
declare @statement nvarchar(500),
@parameters nvarchar(500)
set @statement = 'select * from car where car_id = @p'
set @parameters = '@p int'
exec sp_executesql @Statement, @params = @parameters , @p = 10000000
However, I can't seem to get it to work. Notice that statement and
params need to be nvarchar, otherwise the query would look like:
exec sp_executesql 'select * from car where car_id=@p', @params = '@p int',
@p=1000000
So what I tried was essentially:
a=UnicodeEncode("select * from car where car_id=@p");
b=UnicodeEncode("@p int");
c="exec sp_executesql"+a+", @params = "+b+", @p=1000000"; /* Really more
complicated, but c winds up being this concatenation*/
tds_submit_query_l(tds, c, length(c))
Where tds_submit_query_l my rewrite of tds_submit_query that accepts the
length of a string coming in (since the UTF16 encoded parts of c will
have NUL bytes in them). That just didn't work, though a packet sniffer
shows the string going out as I would expect it to and
tds_submit_query_l works just fine for normal queries.
So I'm guessing that doing this UTF16 encoding of the query isn't the
right way to go.
Has anyone gotten any sort of prepared or sp_executesql statements to
work with MS-SQL 7.0 or 2000? Can you point me in the right direction
at the TDS level?
Sumner
-
Prepared statements w/ the tds protocol,
G., 03/14/2001
- <Possible follow-up(s)>
- Re: Prepared statements w/ the tds protocol, G., 03/14/2001
Archive powered by MHonArc 2.6.24.