簡體   English   中英

更新查詢不適用於OrientDB中的eval()函數和參數

[英]Update query not working with eval() funtion and parametes in OrientDB

在我的項目中,我使用的是Orientdb,更新查詢中存在一些問題。

int amt = 100;
int recordsUpdated = db.command(new OCommandSQL("update A set id = eval('id - "+ amt +"') where eval('id - "+amt+"') > 0")).execute();

這很好。 但,

int recordsUpdated = db.command(new OCommandSQL("update A set id = eval('id - ?') where eval('id - ?') > 0")).execute(100,100);

要么

Map<String,Object> params = new HashMap<String,Object>();
params.put("amt", "100");
int recordsUpdated = db.command(new OCommandSQL("update A set id = eval('id - :amt') where eval('id - :amt') > 0")).execute(params);

不管用。 請幫助我工作。

在SQL中,變量的替換並非在所有地方都有效,特別是在字符串內部。 您可以像第一個示例那樣連接值,或嘗試使用上下文變量,例如:

OCommandSQL cmd = new OCommandSQL("update A set id = eval('id - $id') where eval('id - $id') > 0");
cmd.getContext().setVariable( "id", 100 );
int recordsUpdated = db.command(cmd).execute();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM