带有空参数的Erlang ODBC参数查询

带有空参数的Erlang ODBC参数查询,erlang,null,odbc,parameters,Erlang,Null,Odbc,Parameters,是否可以将空值传递给参数查询?比如说 Sql = "insert into TableX values (?,?)". Params = [{sql_integer, [Val1]}, {sql_float, [Val2]}]. % Val2 may be a float, or it may be the atom, undefined odbc:param_query(OdbcRef, Sql, Params). 当然,odbc:param_query/3在尝试匹配sql_float时

是否可以将空值传递给参数查询?比如说

Sql = "insert into TableX values (?,?)".
Params = [{sql_integer, [Val1]}, {sql_float, [Val2]}].

% Val2 may be a float, or it may be the atom, undefined

odbc:param_query(OdbcRef, Sql, Params).
当然,odbc:param_query/3在尝试匹配sql_float时会抱怨Val2是否未定义,但我的问题是。。。是否可以使用参数化查询,例如:

Sql = "insert into TableY values (?,?,?,?,?,?,?,?,?)".
有空参数吗?我有一个用例,通过插入或更新将大量实时数据转储到数据库中。我正在更新的一些表有十几个左右可为空的字段,我不能保证所有数据都在那里

将每个查询的SQL连接在一起,检查空值似乎很复杂,而且是错误的方法

为每个排列使用参数化查询根本不是一个选项


任何想法或想法都会很棒!谢谢大家!

您可以使用atom
null
表示空值。例如:

Sql = "insert into TableX values (?,?)".
Params = [{sql_integer, [Val1]}, {sql_float, [null]}].

您好,这个话题似乎有点老了,但问题仍然是实际的。尽管docs说value可以是
value()=null | term()
这个小例子说明了一个问题:
odbc:param_查询(NewRef,“SELECT?as fff”,[{sql_integer,[123]}])。
odbc:param_查询(NewRef,“SELECT?as fff”,[{sql_integer,[null]}])*异常退出:{badarg,odbc,param_query,'Params'}在函数odbc:decode/1`{selected,[“fff”],[{123}}