Skip to Content.
Sympa Menu

freetds - Re: [freetds] Sending dbnumeric in dbrpcparam

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT freetds.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Sending dbnumeric in dbrpcparam
  • Date: Mon, 1 Jun 2009 23:45:37 -0400

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,
> > such as SYBDATETIME, SYBMONEY, SYBNUMERIC, or SYBDECIMAL, use
> > 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.

> 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.

HTH.

--jkl





Archive powered by MHonArc 2.6.24.

Top of Page