Q&A

  • ORACLE에서 INSERT문제입니다.
우선 부서테이블 입니다. --------------------------------------------------------

CREATE TABLE C99DEPT

(

DEPT CHAR(5) NOT NULL, /* 부서코드 */

DEPTNM VARCHAR2(10) DEFAULT '' NOT NULL, /* 부서명 */

BIGO VARCHAR2(20) DEFAULT '' NOT NULL, /* 비고 */



CONSTRAINT UPKCL_C99DEPT PRIMARY KEY (DEPT)



USING INDEX TABLESPACE CCMO_INDEX

STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)

);



모두 NOT NULL입니다. 저희 같은 경우는 NULL을 쓰지 않고 '' 인 빈문자열 가지고

합니다. (값 비교, insert, update 등)





다음은 델파이 소스의 간추린 내용입니다. ----------------------------------------------------



with dsDEPT.DataSet do begin



Append;



FieldByName('DEPT').AsString := Trim(txtDEPT.Text);

FieldByName('DEPTNM').AsString := Trim(txtDEPTNM.Text);

FieldByName('BIGO').AsString := '';



Post;

end;



제가 궁금한것이요 FieldByName('BIGO').AsString := ''; 라는 부분인데요



MSSQL에서는 잘 작동합니다.



그런데 ORACLE(이번에 처음 해봅니다.. ㅠ.ㅠ) 에서는 이 방법이 안되더군요



위 방법대로 하면 NULL로 인식해버리는 문제가 있더군요..



MSSQL에서는 아무런 문제도 없이 잘 작동하던것이 말입니다.



그래서 지금 쓸려고 하는 방법이 FieldByName('BIGO').AsString := ' '; 입니다.



우습죠? ㅡ.ㅡ;;;



아니면 NULL로서 값을 가져가야 하는지 궁금하네요..



다른분은 실무에서 어떻게 쓰시는지 정말 궁금합니다.



답변 부탁드리겠습니다.



꾸뻑~



2  COMMENTS
  • Profile
    아폴론 2001.02.06 22:24
    DEUKMO wrote:

    > 우선 부서테이블 입니다. --------------------------------------------------------

    > CREATE TABLE C99DEPT

    > (

    > DEPT CHAR(5) NOT NULL, /* 부서코드 */

    > DEPTNM VARCHAR2(10) DEFAULT '' NOT NULL, /* 부서명 */

    > BIGO VARCHAR2(20) DEFAULT '' NOT NULL, /* 비고 */

    >

    > CONSTRAINT UPKCL_C99DEPT PRIMARY KEY (DEPT)

    >

    > USING INDEX TABLESPACE CCMO_INDEX

    > STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)

    > );

    >

    > 모두 NOT NULL입니다. 저희 같은 경우는 NULL을 쓰지 않고 '' 인 빈문자열 가지고

    > 합니다. (값 비교, insert, update 등)

    >

    >

    > 다음은 델파이 소스의 간추린 내용입니다. ----------------------------------------------------

    >

    > with dsDEPT.DataSet do begin

    >

    > Append;

    >

    > FieldByName('DEPT').AsString := Trim(txtDEPT.Text);

    > FieldByName('DEPTNM').AsString := Trim(txtDEPTNM.Text);

    > FieldByName('BIGO').AsString := '';

    >

    > Post;

    > end;

    >

    > 제가 궁금한것이요 FieldByName('BIGO').AsString := ''; 라는 부분인데요

    >

    > MSSQL에서는 잘 작동합니다.

    >

    > 그런데 ORACLE(이번에 처음 해봅니다.. ㅠ.ㅠ) 에서는 이 방법이 안되더군요

    >

    > 위 방법대로 하면 NULL로 인식해버리는 문제가 있더군요..

    >

    > MSSQL에서는 아무런 문제도 없이 잘 작동하던것이 말입니다.

    >

    > 그래서 지금 쓸려고 하는 방법이 FieldByName('BIGO').AsString := ' '; 입니다.

    >

    > 우습죠? ㅡ.ㅡ;;;

    >

    > 아니면 NULL로서 값을 가져가야 하는지 궁금하네요..

    >

    > 다른분은 실무에서 어떻게 쓰시는지 정말 궁금합니다.

    >

    > 답변 부탁드리겠습니다.

    >

    > 꾸뻑~



    오라클디비의 필드를 Not Null로 설정하면 오라클으 반드시 무었인가를 입력 받아야

    합니다. 그러지 않으면 인서트,업데이트등이 안됩니다.

    Not Null 선언을 하지 마시고 그냥 해 보세요 Null 든 '' 이든 잘 들어갑니다.

  • Profile
    제덕모 2001.02.07 02:10
    ^^;;;

    정말 감사합니다.

    아직 해보진 않았지만 깨우친바가 있어 이렇게 감사의 마음을 전합니다.

    저한테 있던 고정관념을 일깨워 주셨어요..



    고정관념 무섭네여..

    실은 이거 고민하니라구 이틀을 계속 머리속에 생각하고 있었거든요

    책이란 책(그래봐야 3권밖에 없지만) 다 뒤져보고 했는데

    그런거에 관한건 나와있지 않더라구요..



    키에 해당하는것만 NOT NULL하고 나머진 그냥 해도 될것을 ..

    지금하는건 MSSQL이 아닌걸. 미쳐 생각못하고 있었네요..



    MSSQL에서 예전에 이런경우가 있었거든여

    임시 테이블을 만들어 작업할 일이 있어 NOT NULL

    이런 옵션은 주지 않고 만들었었거든요

    그런데 FILED값이 NULL이였을때 값을 넣으면 값이 제대로 반영이 되질 않더군요.

    그 뒤론 NULL이란 값 자체를 처음부터 가지고 가지 않았었습니다.



    아무튼 고맙습니다.

    꾸벅~







    아폴론 wrote:

    > DEUKMO wrote:

    > > 우선 부서테이블 입니다. --------------------------------------------------------

    > > CREATE TABLE C99DEPT

    > > (

    > > DEPT CHAR(5) NOT NULL, /* 부서코드 */

    > > DEPTNM VARCHAR2(10) DEFAULT '' NOT NULL, /* 부서명 */

    > > BIGO VARCHAR2(20) DEFAULT '' NOT NULL, /* 비고 */

    > >

    > > CONSTRAINT UPKCL_C99DEPT PRIMARY KEY (DEPT)

    > >

    > > USING INDEX TABLESPACE CCMO_INDEX

    > > STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)

    > > );

    > >

    > > 모두 NOT NULL입니다. 저희 같은 경우는 NULL을 쓰지 않고 '' 인 빈문자열 가지고

    > > 합니다. (값 비교, insert, update 등)

    > >

    > >

    > > 다음은 델파이 소스의 간추린 내용입니다. ----------------------------------------------------

    > >

    > > with dsDEPT.DataSet do begin

    > >

    > > Append;

    > >

    > > FieldByName('DEPT').AsString := Trim(txtDEPT.Text);

    > > FieldByName('DEPTNM').AsString := Trim(txtDEPTNM.Text);

    > > FieldByName('BIGO').AsString := '';

    > >

    > > Post;

    > > end;

    > >

    > > 제가 궁금한것이요 FieldByName('BIGO').AsString := ''; 라는 부분인데요

    > >

    > > MSSQL에서는 잘 작동합니다.

    > >

    > > 그런데 ORACLE(이번에 처음 해봅니다.. ㅠ.ㅠ) 에서는 이 방법이 안되더군요

    > >

    > > 위 방법대로 하면 NULL로 인식해버리는 문제가 있더군요..

    > >

    > > MSSQL에서는 아무런 문제도 없이 잘 작동하던것이 말입니다.

    > >

    > > 그래서 지금 쓸려고 하는 방법이 FieldByName('BIGO').AsString := ' '; 입니다.

    > >

    > > 우습죠? ㅡ.ㅡ;;;

    > >

    > > 아니면 NULL로서 값을 가져가야 하는지 궁금하네요..

    > >

    > > 다른분은 실무에서 어떻게 쓰시는지 정말 궁금합니다.

    > >

    > > 답변 부탁드리겠습니다.

    > >

    > > 꾸뻑~

    >

    > 오라클디비의 필드를 Not Null로 설정하면 오라클으 반드시 무었인가를 입력 받아야

    > 합니다. 그러지 않으면 인서트,업데이트등이 안됩니다.

    > Not Null 선언을 하지 마시고 그냥 해 보세요 Null 든 '' 이든 잘 들어갑니다.