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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.