public bool update(string person_id) { string sql = string.Format(sql_update, OBJECT_ID, person_id, CLASSIFICATION_CODE, CATE_NAME, CATE_ORDER, CATE_COMMENT, DESCR); OraDB DB = new OraDB(); DB.Execute(sql); DB.Close(); return(true); }
private bool _update(string person_id) { // 자아.. // 업데이트 문법 만들어주기.. // 이거는 내부 함수이다.. // 실제 데이터를 넣어 주기 위한 것이고.. // 고정된 값에 대해서는 업데이트 등을 해주지 않는다.. // insert 또는 update 를 통해서 초기 값 또는 이력을 만든 이후.. // 이놈을 통해서 실제 값을 업데이트 하도록 하자.. // 자아.. 기본적으로는 다음과 같다.. {2} 번에 해당하는 값만 만들어주면 된다.. string sql_update = "UPDATE " + __TABLE_NAME__ + " SET UPDATE_DATE = TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), UPDATOR_ID = '{1}' {2} WHERE OBJECT_ID = '{0}'"; string update_str = ""; for (int i = 0; i < COLUMN_NAME.Length; i++) { if (FIXED_COLUMNS.Contains(COLUMN_NAME[i])) { continue; // FIXED에 있으면 무시.. } string value = COLUMNS[COLUMN_NAME[i]]; if (value == "") { continue; } // "" 인 경우는 무시하자.. null 이 들어 갈수 있을지 모르겠는데.. // 값을 지우려면 null 을 넣어주어야 할듯.. if (value == null) { value = ""; } update_str += "," + COLUMN_NAME[i] + "='" + COLUMNS[COLUMN_NAME[i]] + "'"; //res += "'" + COLUMN_NAME[i] + "':'" + COLUMNS[COLUMN_NAME[i]] + "'"; } if ("".Equals(update_str)) // 변경할게 없으면 리턴.. .. 진짜 그런가..?? { return(false); } string sql = string.Format(sql_update, OBJECT_ID, person_id, update_str); OraDB DB = new OraDB(); DB.Execute(sql); DB.Close(); return(true); }
public bool delete(string person_id) { if (OBJECT_ID == null || "".Equals(OBJECT_ID)) { return(false); } string sql = string.Format(sql_delete, OBJECT_ID); OraDB DB = new OraDB(); DB.Execute(sql); DB.Close(); return(true); }
public bool insert(string person_id, string parent_id) { // 자아.. INSERT.. // 그나마 복잡한게 INSERT라고 보면 된다.. // 우선 CLS코드를 직접 구해줘야만 하고.. // 그에 맞는 ORDER도 만들어주어야 한다.. // 그외에는 머.. 별겨 없다.. if (parent_id == null || "".Equals(parent_id)) { parent_id = "0"; } OraDB DB = new OraDB(); try { string sql_getCls = "SELECT PARENTCODE || CHILDCODE RES, CHILDCODE FROM ( SELECT (SELECT CLASSIFICATION_CODE CLASSIFICATION_CODE FROM TB_OBJECT_CLASSIFICATION WHERE OBJECT_ID = {0} ) PARENTCODE, CHILDCODE FROM (SELECT SUBSTR( CHILDCODE, LENGTH(CHILDCODE)-4 ) CHILDCODE FROM (SELECT MAX( B.CLASSIFICATION_CODE ) PARENTCODE, '0000000' || ( NVL( SUBSTR( MAX(A.CLASSIFICATION_CODE), LENGTH( NVL( MAX( B.CLASSIFICATION_CODE ), 0 ) ) + 1 ), 0 ) + 1 ) CHILDCODE FROM TB_OBJECT_CLASSIFICATION A, (SELECT MAX(CLASSIFICATION_CODE) CLASSIFICATION_CODE, COUNT(*) CNT FROM TB_OBJECT_CLASSIFICATION WHERE OBJECT_ID = {0} ) B WHERE A.CLASSIFICATION_CODE LIKE B.CLASSIFICATION_CODE || '_____' ) ))"; OracleDataReader rd = DB.ExecuteQuery(String.Format(sql_getCls, parent_id)); try { if (rd.HasRows) { rd.Read(); CLASSIFICATION_CODE = rd["RES"].ToString(); CATE_ORDER = rd["CHILDCODE"].ToString(); } else { return(false); } } finally { if (rd != null) { rd.Close(); } rd = null; } string sql = string.Format(sql_insert, person_id, CLASSIFICATION_CODE, CATE_NAME, CATE_ORDER, CATE_COMMENT, DESCR); DB.Execute(sql); } finally { DB.Close(); } return(true); }
public bool insert(string person_id, string parent_id) { //private string sql_insert = "INSERT INTO " + __TABLE_NAME__ + " VALUES ( " + __SEQUENCE_NAME__ + ".nextval, TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', '{1}', '{2}', '{3}', '{4}', 'S', '{5}' )"; // insert 를 해주는 것인데.. // 일단은 최소한의 값으로 값을 insert 해주면 된다.. ( row ) // 그 이후 _update 를 호출 하자.. // 자아.. 일단.. insert, update 시에는 FIXED COLUMN 항목들에 대해서는 별도로 처리를 해줄수 있도록 하자.. string sql_object_id = "SELECT " + __SEQUENCE_NAME__ + ".NEXTVAL FROM DUAL"; // 자아.. 사실은.. INSERT 에서 NEXTVAL 을 여러개를 써도 하나로 처리가 된다.. // 하지만.. INSERT 한 이후에 UPDATE를 해줘야 하는데.. 어차피 OBJECT_ID 를 알아야 하기 때문에.. // 그냥 따로 빼서 사용하도록 하자.. // 최초로 만드는 것이기 때문에 OBJECT_ID 와 MASTER_ID 는 동일.. // VERSION 은 0 으로 설정이 된다.. // owner에 대해서는 조금 생각을 해줘야 할것 같기는 한데.. // 일단은.. 나중에 팀코드를 넣어주어야 할것 같기도 하다.. string sql_insert = "INSERT INTO " + __TABLE_NAME__ + " ( OBJECT_ID, CREATE_DATE, CREATOR_ID, UPDATE_DATE, UPDATOR_ID, MASTER_ID, VERSION, STATUS ) VALUES ( '{1}',TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}',TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', '{1}', 0, 'W' )"; OraDB DB = new OraDB(); string object_id = DB.GetQueryResult <string>(sql_object_id, delegate(OracleDataReader reader) { string val = reader[0].ToString(); return(val); }); if (object_id != null && !"".Equals(object_id)) { // 일단은 신규 object_id 를 가져왔으면.. string sql = string.Format(sql_insert, person_id, object_id); DB.Execute(sql); COLUMNS["CATE_PCODE"] = parent_id; this.OBJECT_ID = object_id; // 자아.. 일단 값을 넣고.. // 마지막으로 실제 업데이트.. _update(person_id); } DB.Close(); return(true); }
public bool delete(string person_id) { // 자아.. DELETE 해주는 부분.. // 실제로 삭제는 하지 않고 상태만 바꿔준다.. // 바꿔줘야 하는 것은 MASTER_ID를 기준으로 동일한 것을 전체 처리.. if (OBJECT_ID == null || "".Equals(OBJECT_ID)) { return(false); } string sql_delete = "UPDATE " + __TABLE_NAME__ + " SET STATUS = 'D' WHERE MASTER_ID IN ( SELECT MASTER_ID FROM " + __TABLE_NAME__ + " WHERE OBJECT_ID = '{0}' )"; string sql = string.Format(sql_delete, OBJECT_ID); OraDB DB = new OraDB(); DB.Execute(sql); DB.Close(); return(true); }
public bool update(string person_id) { // update..... // 자아.. UPDATE를 해주자.. // UPDATE는 INSERT와 유사하다.. // 하나의 ROW를 만들어 주고.. ( 물론 이때 MASTER_ID만 동일.. VERSION등이 변경. .) // OBJECT_ID를 얻고.. // 신규로 만들어 진놈에 _update를 호출한다.. string sql_object_id = "SELECT " + __SEQUENCE_NAME__ + ".NEXTVAL FROM DUAL"; // 자아.. 똑같아.. 일단은 신규 ID를 가져와.. string column_str = ""; for (int i = 0; i < COLUMN_NAME.Length; i++) { string _name = COLUMN_NAME[i]; if (FIXED_COLUMNS.Contains(_name)) { continue; } column_str += "," + _name; } string sql_update = "INSERT INTO " + __TABLE_NAME__ + " ( OBJECT_ID, CREATE_DATE, CREATOR_ID, UPDATE_DATE, UPDATOR_ID, MASTER_ID, VERSION, STATUS " + column_str + " ) " + " SELECT '{2}' OBJECT_ID, CREATE_DATE, CREATOR_ID, TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS') UPDATE_DATE , " + " '{0}' UPDATOR_ID, MASTER_ID, VERSION+1 VERSION, STATUS " + column_str + " FROM " + __TABLE_NAME__ + " " + " WHERE OBJECT_ID = (SELECT MAX(OBJECT_ID) FROM " + __TABLE_NAME__ + " WHERE MASTER_ID IN ( " + " SELECT MASTER_ID FROM " + __TABLE_NAME__ + " WHERE OBJECT_ID = '{1}' ) )"; // 자아.. SQL설명.. // 신규로 ROW를 하나 만드는 것이다.. OraDB DB = new OraDB(); string ori_object_id = this.OBJECT_ID; // 일단 예전것.. string object_id = DB.GetQueryResult <string>(sql_object_id, delegate(OracleDataReader reader) { string val = reader[0].ToString(); return(val); }); if (object_id != null && !"".Equals(object_id)) { // 일단은 신규 object_id 를 가져왔으면.. string sql = string.Format(sql_update, person_id, ori_object_id, object_id); DB.Execute(sql); this.OBJECT_ID = object_id; // 자아.. 일단 값을 넣고.. // 마지막으로 실제 업데이트.. _update(person_id); } DB.Close(); return(true); }