Re: Empty VARCHAR parameters converted to NULL
Joshua Lang <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <CAFTwDJTM_Z0CW=DrgjXaxqkexLb0ycceF60MTQ8Kg5oETdkqqw@mail.gmail.com> |
I've read that older versions didn't even support passing 0-length data (prior to TDS 7.0 I believe). If this could be supported for later versions of TDS 7.0, that would be great. Thanks. On Tue, Jan 19, 2016 at 2:52 AM, Frediano Ziglio <[email protected]> wrote: > 2016-01-16 1:41 GMT+00:00 Joshua Lang <[email protected]>: > > In the latest version of FreeTDS-dblib (0.95.79) I'm passing rpc VARCHAR > > parameters of 0 length, but non-NULL (empty strings). FreeTDS seems to > turn > > these into NULL values before passing them on to SQL Server. From what > I've > > read, it seems as if older databases didn't support passing empty > strings, > > but newer ones do? (i.e. TDS 7.0+ do support empty strings). > > > > It seems as this is a known issue, but I was wondering if it is possible > to > > fix it for the newer versions of SQL server? E.g. in dbrpcparam() > passing a > > non-NULL pointer to the 'value' parameter and a 0 to 'datalen' would > > indicate an empty string is desired if possible. > > > > Thoughts? > > > The main problem is not libTDS (the code library) but dbrpcparam > specification. > datalen < 0 is invalid for variable fields (like VARCHAR) and 0 is used > for NULL > value (no matter the data pointer). But looks like your suggestion > (not NULL value > and 0 datalen) could be a good choice. > Not sure however if this could work with all types and server versions > (for instance > 0 size TEXT). > We can do it but I'm not thinking about backporting it to 0.95. > > Frediano > _______________________________________________ > FreeTDS mailing list > [email protected] > http://lists.ibiblio.org/mailman/listinfo/freetds >