お世話になります。
現在VisualStudio2005(C#)、Windowsフォームにて開発を行っています。
OracleDataAdapterを使用し更新する際、更新日時による排他制御を行いたいのですが、
どのように指定すれば正しくパラメータ設定が行えるのかがわからず悩んでいます。
自動でコマンドを発行するようにすれば勝手に排他制御も行ってくれるそうですが、
更新する項目を指定したいので手動でコマンドを発行しています。
(DB上では更新日付はTIME STAMPです)
以下、実際のコーディング内容です。
==================================
1. 更新日時を編集せずに取得した場合
==================================
(検索SQL)
SELECT
AAA.CODE CODE ,
AAA.NAME NAME ,
AAA.UPD_DATE UPD_DATE
FROM
AAA
---------------------------------
(更新SQL)
UPDATE AAA
SET
NAME = :name ,
WHERE
CODE = :code
AND UPD_DATE = :oldUpdDate
------------------------------------------------------------------------------------------------
//[UPDATE文]発行
cmd = new OracleCommand(this.updateSQL(), connection);
adp.UpdateCommand = cmd;
adp.UpdateCommand.Parameters.Add("name", OracleDbType.Varchar2, 30, "NAME");
adp.UpdateCommand.Parameters.Add("code", OracleDbType.Varchar2, 3, "CODE");
//↓↓↓この部分です。
adp.UpdateCommand.Parameters.Add("oldUpdDate", OracleDbType.TimeStamp, 20, "UPD_DATE").SourceVersion
= DataRowVersion.Original;
------------------------------------------------------------------------------------------------
==================================
2. 更新日時を文字列で取得した場合
==================================
(検索SQL)
SELECT
AAA.CODE CODE ,
AAA.NAME NAME ,
TO_CHAR(AAA.UPD_DATE,'YYMMDDHH24MISS') UPD_DATE
FROM
AAA
---------------------------------
(更新SQL)
UPDATE AAA
SET
NAME = :name ,
WHERE
CODE = :code
AND UPD_DATE = TO_DATE(:p_oldUpdDate,'YYMMDDHH24MISS')
------------------------------------------------------------------------------------------------
//[UPDATE文]発行
cmd = new OracleCommand(this.updateSQL(), connection);
adp.UpdateCommand = cmd;
adp.UpdateCommand.Parameters.Add("name", OracleDbType.Varchar2, 30, "NAME");
adp.UpdateCommand.Parameters.Add("code", OracleDbType.Varchar2, 3, "CODE");
//↓↓↓この部分です。
adp.UpdateCommand.Parameters.Add("oldUpdDate", OracleDbType.Varchar2, 12, "UPD_DATE").SourceVersion
= DataRowVersion.Original;
------------------------------------------------------------------------------------------------
※ちなみに2の場合、下記のように文字列を直接指定すると正常に処理されます。
adp.UpdateCommand.Parameters.Add("p_oldUpdDate", "060922172230");
以上、何か情報をお持ちの方いらっしゃいましたらご教授下さい。
宜しくお願い致します。