我正在尝试更新Oracle数据库中的表。这段带有硬编码状态代码的代码可以工作并更新记录:
public WorkRates UpdateRecord(int id, string stateCode)
{
var sql = "update work_rates set state_code = 'WA' where id = :id";
var db = Db.Load(sql);
db.AddParameter(":id", id);
db.DoExecute();
return null;
}
当我将其更改为:
public WorkRates UpdateRecord(int id, string stateCode)
{
var sql = "update work_rates set state_code = :stateCode where id = :id";
var db = Db.Load(sql);
db.AddParameter(":id", id);
db.AddParameter(":stateCode", stateCode);
db.DoExecute();
return null;
}
...它抛出异常“ORA-01036:非法变量名称/号码”。函数public WorkRates UpdateRecord(int id,string stateCode)确实为stateCode('WA')获取了正确的值。任何帮助表示赞赏!
答案 0 :(得分:0)
撤销订单修复它:
db.AddParameter(":stateCode", stateCode);
db.AddParameter(":id", id);
出于某种原因,Oracle喜欢按照它们在sql语句中出现的顺序来了解绑定变量。就像Oracle按位置绑定一样。在存储过程中编写动态sql时遇到了同样的问题。