[erlang-questions] Null parameter for ODBC param_query

Andy Richards <>
Fri Apr 20 12:14:54 CEST 2012


Hi Avinash,

That's useful thanks and gives me food for thought. We have many stored procs so I wouldn't know the param types before hand so I would need to dynamically construct our Format string with the appropriate types...

E.g. lists:flatten(io_lib:fwrite("exec User_Read ~w, ~s, ~f", [Param, "some string", 0.1])

I'm not sure what the overhead would be but I could cache the string once constructed the first time. Do you find fwrite performant enough replacing parameters? I think we going to build a custom approach which will handle bits and sqlserver default values and perhaps your approach as you suggest.

Many thanks,

Andy.

Sent from my iPad

On 20 Apr 2012, at 07:24, "Avinash Dhumane" <> wrote:

> I use the ODBC application of Erlang (presently, on R14B02) quite heavily
> and with proprietary drivers like AS400 and Netezza.
> 
> I rely on odbc:sql_query() - even with parameters - more than on
> odbc:param_query(). I use the latter only when to submit a batch of
> INSERTs. With former, I construct the SQL string by duly substituting all
> the parameter values and submit. So, the submission through ODBC becomes
> exactly same as I would do on the SQL command-line interface tool provided
> by the DBMS. Applying to your case, I would have done as follows:
> 
> lists:flatten(io_lib:fwrite("exec User_Read ~w", [Param])
> 
> On Thu, 19 Apr 2012 18:54:16 +0530, Andy Richards
> <> wrote:
> 
>> Hi all,
>> 
>> I found this previous unanswered post to the mailing list and I now face the same problem....
>> 
>> http://erlang.2086793.n4.nabble.com/NULL-parameter-for-ODBC-param-query-td3226735.html
>> 
>>> "Is it possible to use null values in a parameterised odbc param_query?
>>> 
>>> example: odbc:param_query("exec User_Read ?", [{sql_integer, Param}]).  %
>>> Param is either an integer or null
>>> 
>>> The odbc driver returns the 'null' atom when selecting rows, but I haven't
>>> found a value that allows me to specify a null parameter ('null', 'NULL',
>>> <<"null">>, etc...)"
>> 
>> 
>> According to the documentation value = null | term() however an exception is thrown if the atom null is used?
>> 
>> Has anyone come across this or are there any workarounds to this issue ?
>> 
>> I've already patched the c portion of the odbc driver to resolve a socket issue under Linux so I'm wondering if this module is used much in the Erlang world?
>> 
>> Many thanks,
>> 
>> Andy.
>> 
>> 
>> 
> 
> 
> -- 
> Using Opera's revolutionary email client: http://www.opera.com/mail/



More information about the erlang-questions mailing list