2010-11-19 15 views
1

&更新のようなものを処理するために、私は自動的に生成された多数のデータアクセスクラスを持っています。oracle関数をパラメータ付き問合せの一部としてコールする方法はありますか。

これらは、次のようになります。私はこれを行うためにどのような方法があります

cmd.CommandText = "UPDATE myTable set f1 = pkg.getMyValue, f2 = :f2, f3 = :f3 where id = :id" 

のような私がやりたいようにSQLを再書き込み、それを見て何かした場合

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またはパラメータの設定方法を変更せずに、_f1を「特別な」値に設定しますか?特定のケースでのみ、f1の値を設定する必要があります - ほとんどの場合、nullになります。 .NET 2.0、およびOracleに対するSystem.Data.OracleClient.dllへ11

答えて

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; 
/
関連する問題