pro*c 쿼리에 관한 질문입니다.

cjy1126의 이미지

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를 잘몰라 좋은 방법을 배우고자 올려봅니다.

늦었지만 새해복 많이 받으시고, 조언 부탁드립니다. ^^

jongi의 이미지

쿼리문 실행 후 리턴값을 확인하세요.

sqlca.sqlcode (맞나?)가 0이 아니면 에러가 발생했다고 보시면 됩니다.

데이타가 없어서 에러가 발생한 건지, 기타 이유로 발생한 건지는 코드값을 확인해 보시면 됩니다.

--
종이한장 * 이성으로 비관하더라도 의지로 낙관하라! (그람시)

atie의 이미지

사번의 valid 체크 함수는 이미 있을 듯한데요. 없다면, 하나쯤 만들어 두면 유용하게 여러군데서 써 먹을 수 있을만한 함수입니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

oldbell의 이미지

select c.sabun 
  from chulgun c , sawon s 
where c.sabun = s.sabun 
   and ...

으로 하면 sawon table에 있는 사번만 가지고 검색하지 않을까요?

인생의 무게를 느껴라. 아는 만큼 보이는게다.

budle77의 이미지

윗분 말씀처럼

select c.sabun 
  from chulgun c , sawon s 
where c.sabun = s.sabun 
   and c.sabun = [입력받은 사번]

이것도 좋을듯 하구요.
그리고 외부키(foreign key)를 설정해두시는게 좋을것 같습니다. 잘못된 사번이 들어갈 여지를 아예 없애버리는것도 좋죠. 잘못된 사번이 들어오면 아예 에러가 나게...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.