pro*c 쿼리에 관한 질문입니다.
글쓴이: cjy1126 / 작성시간: 월, 2005/02/14 - 6:11오후
PRO*C로 사원출근기록을 만들고 있습니다.
int IsStart(int sabun, char *strDay) { int seq = 0; EXEC SQL SELECT SEQ INTO :seq FROM AGENT_TEST WHERE STARTDAY=:strDay AND SABUN=:sabun; return seq; }
위와같이 오늘 출근한 기록이 없으면(seq=0) 첫출근으로 간주하고 출근 기록을 insert 합니다.
문제는 db table의 구조를
sawon table
SABUN NUMBER(22) NOT NULL, NAME VARCHAR2(8) NOT NULL, PRIMARY KEY ( SABUN )
chulgun table
SEQ NUMBER(22) NOT NULL, SABUN NUMBER(22), STARTDAY VARCHAR2(8) NOT NULL, STARTTIME VARCHAR2(6) NOT NULL, ENDDAY VARCHAR2(8), ENDTIME VARCHAR2(6), CODE NUMBER(22) NOT NULL, PRIMARY KEY ( SEQ )
IsStart의 결과는 오늘 출근을 못찾아도, 잘못된 sabun이 들어와도 0이 return 됩니다.
즉, 잘못된 sabun이 들어와도 return 값에 의해서 오늘 출근 안한걸로알고, 엄한 sabun을 insert하다가 프로그램이 죽어버립니다.
오늘 출근 안한건지? 잘못된 sabun이 들어온건지 알수있는 방법이 없을까요?
아니면 insert를 할때 미리 sabun table과 현재의 sabun을 비교해봐야 하나요?
제가 db를 잘몰라 좋은 방법을 배우고자 올려봅니다.
늦었지만 새해복 많이 받으시고, 조언 부탁드립니다. ^^
Forums:
쿼리문 실행 후 리턴값을 확인하세요.sqlca.sqlcode (맞
쿼리문 실행 후 리턴값을 확인하세요.
sqlca.sqlcode (맞나?)가 0이 아니면 에러가 발생했다고 보시면 됩니다.
데이타가 없어서 에러가 발생한 건지, 기타 이유로 발생한 건지는 코드값을 확인해 보시면 됩니다.
--
종이한장 * 이성으로 비관하더라도 의지로 낙관하라! (그람시)
사번의 valid 체크 함수는 이미 있을 듯한데요. 없다면, 하나쯤 만들
사번의 valid 체크 함수는 이미 있을 듯한데요. 없다면, 하나쯤 만들어 두면 유용하게 여러군데서 써 먹을 수 있을만한 함수입니다.
----
I paint objects as I think them, not as I see them.
atie's minipage
[code:1]select c.sabun from chulgu
으로 하면 sawon table에 있는 사번만 가지고 검색하지 않을까요?
인생의 무게를 느껴라. 아는 만큼 보이는게다.
윗분 말씀처럼[code:1]select c.sabun fr
윗분 말씀처럼
이것도 좋을듯 하구요.
그리고 외부키(foreign key)를 설정해두시는게 좋을것 같습니다. 잘못된 사번이 들어갈 여지를 아예 없애버리는것도 좋죠. 잘못된 사번이 들어오면 아예 에러가 나게...
댓글 달기