[英]Java prepareStatement setting
我准備了這樣的聲明:
WHERE TRADE_DATE >= TRUNC(add_months(current_date,-12))
但是我想要這樣:
WHERE TRADE_DATE >= TRUNC(?)
然后像下面這樣設置值:
query.setString(1,"add_months(current_date,-12)");
要么
query.setString(1,"trunc(sysdate, 'YEAR')");
但是,我說錯了
inconsistent datatypes: expected DATE got NUMBER
我怎樣才能做到這一點?
我認為您必須使用字符串串聯等方法來構建模板語句,並記錄要在其旁邊插入的參數(在對象數組中?)。
然后遍歷每個對象並執行setString()
等。您不能使用PreparedStatement
插入任意SQL(這實際上會挫敗PreparedStatement
的好處之一,這是將SQL構造限制為自定義參數)
您可以像SQL一樣設置用Calendar計算的java.sql.Date。
否則-如果可以枚舉要填充的表達式,則可以使用SQL CASE表達式打開選擇編號:
CASE ? WHEN 1 THEN add_months(current_date,-12)
WHEN 2 THEN trunc(sysdate, 'YEAR')
END
query.setInt(choice);
也許一些存儲過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.