我有许多自动生成的数据访问类来处理插件和放大器等内容。更新。
这些看起来像:
cmd.CommandType = CommandType.Text
cmd.CommandText = "UPDATE myTable set f1 = :f1, f2 = :f2, f3 = :f3 where id = :id"
cmd.Parameters.AddWithValue(":f1", _f1)
cmd.Parameters.AddWithValue(":f2", _f2)
cmd.Parameters.AddWithValue(":f3", _f3)
cmd.ExecuteNonQuery()
如果我要重写sql来做我想做的事,那就像
cmd.CommandText = "UPDATE myTable set f1 = pkg.getMyValue, f2 = :f2, f3 = :f3 where id = :id"
有没有办法通过将_f1设置为“特殊”值来实现,而不更改更新SQL或参数的设置方式?只有在某些情况下才需要设置f1的值 - 大部分时间它都是null。
对oracle 11使用.net 2.0和system.data.oracleclient。
答案 0 :(得分:0)
如果它为null,您可以考虑使用pkg.getMyValue填充f1的基础表上的触发器:
create or replace trigger myTrigger
before insert or update on myTable for each row
begin
if :new.f1 is null
then
:new.f1 := pkg.getMyValue;
end if;
end;
/