Erlang запрос параметра ODBC с нулевыми параметрами - PullRequest
4 голосов
/ 12 марта 2010

Можно ли передавать нулевые значения в запросы параметров? Например

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 будет жаловаться, если Val2 не определен при попытке сопоставления с sql_float, но мой вопрос ... Возможно ли использовать параметризованный запрос, такой как:

Sql = "insert into TableY values (?,?,?,?,?,?,?,?,?)".

с какими-либо нулевыми параметрами? У меня есть случай использования, когда я добавляю или обновляю большое количество данных в реальном времени в базу данных. Некоторые из таблиц, которые я обновляю, содержат около десятка пустых полей, и я не могу гарантировать, что все данные будут там.

Объединение SQL для каждого запроса, проверка на нулевые значения кажутся сложными, и неправильный способ сделать это.

Наличие параметризованного запроса для каждой перестановки просто не вариант.

Любые мысли или идеи были бы фантастическими! Спасибо!

1 Ответ

1 голос
/ 14 января 2011

Вы можете использовать атом null для обозначения нулевого значения. Например:

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