2010-03-12 45 views
4

是否可以將空值傳遞給參數查詢?例如具有空參數的Erlang ODBC參數查詢

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

您可以使用原子null來表示空值。比如:

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

你好,看來這個話題有點老了,但問題還是真實的。儘管文檔說價值可能是'value()= null | term()'這個小例子說明了一個問題:'odbc:param_query(NewRef,「SELECT?as fff」,[{sql_integer,[123]}])。 [{sql_integer,[null]}])。 **異常退出:{badarg,odbc,param_query,'Params'} in function odbc:decode/1' {selected,[「fff」],[{123}]} – danechkin 2011-12-05 03:46:00