[freetds] Sending dbnumeric in dbrpcparam

Damien Churchill damoxc at gmail.com
Tue Jun 2 04:55:28 EDT 2009

2009/6/2 James K. Lowden <jklowden at freetds.org>:
> Damien Churchill wrote:
>> >> Here is the code that I've tried: http://pastebin.com/f69a761d7
>> >
>> > http://manuals.sybase.com/onlinebooks/group-cnarc/cng1110e/dblib/@Generic__BookTextView/34413;pt=39614
>> >
>> >        "The value of type indicates the datatype of *value. See
>> > "Types" for more information. For types that have no C equivalent,
>> > dbconvert_ps to initialize *value."
>> Hmm, I gave this a try and it still fails with the same error.
> Um, that's not possible?  The advice is to convert your numeric value to a
> "known" type -- a C string, say -- and bind your parameter to that
> (intermediate) buffer.  Line 63 becomes:
> ret = dbrpcparam(dbproc, "@idecimal", 0, SYBCHAR, -1, strlen(tmp), (BYTE
> *)tmp);
> At that point, it's just a plain-vanilla RPC call.

Ah this does work, thanks!

>> Would this only work with Sybase perhaps?
> It should work regardless of TDS protocol.  The server interaction is
> different, but the API (and its limitations) are the same.
> FWIW, there's no technical reason dbrpcparam couldn't deal directly with
> these types.  It's not specified by the vendors, but it's a reasonable
> extension.  In case you want to try your hand at it.

Do you mean that freetds currently does not support sending these types?


More information about the FreeTDS mailing list