public int SetData(string procedureName, IList<SQLProcedureParameterVO> ParameterList)
{
int succCount = 0;
Exception ex = null;
bool querySucc = true;
//저장프로시저와 커맨드 객체 연결
NpgsqlCommand nCMD = new NpgsqlCommand(procedureName, this.NpgConn);
nCMD.CommandType = CommandType.StoredProcedure;
foreach (SQLProcedureParameterVO SQLProcedureParameterVO in ParameterList)
{
var parameter = nCMD.CreateParameter();
parameter.ParameterName = SQLProcedureParameterVO.parameterName;
parameter.DbType = SQLProcedureParameterVO.DBType;
parameter.Value = SQLProcedureParameterVO.value;
nCMD.Parameters.Add(parameter);
}
using (nCMD)
{
using (NpgsqlTransaction tran = this.NpgConn.BeginTransaction(IsolationLevel.ReadCommitted))
{
nCMD.Transaction = tran;
try
{
lock (SetDataThreadSafe)
{
succCount += nCMD.ExecuteNonQuery();
}
}
catch (Exception e)
{
querySucc = false;
ex = e;
}
if (querySucc)
{
tran.Commit();
return succCount;
}
else
{
if (tran != null)
{
tran.Rollback();
}
throw ex;
}
}//End of using(tran)
}//End of Using(cmd)
}