Re: Empty VARCHAR parameters converted to NULL
Frediano Ziglio <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <CAHt6W4frzQ911BOEGNqVZR4-Lfzwy=4NJQ8A_+etphMZ05n1RA@mail.gmail.com> |
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