Q&A

  • [DB]한꺼번에 데이터를 저장하려면
안녕하세요~~



아주아주 어려운 문제에 봉착했습니다.. (개인적으로..)

고수님들의 실력을 조금만 빌려주시기 바라면서..



데이터가 비주기적으로 수신되어 오는데, 한꺼번에 많은 데이터가

올라오는 경우가 있습니다.

이때, 데이터를 저장하는라고 다른 운용을 전혀 할 수 없을 시간이

소요될 경우가 있습니다.



DB는 오라클을 사용하고 있는데, 오라클의 proc에서 보면 배열을 이용해서

한꺼번에 데이터를 저장하고, 읽고 하는 방법이 있었는데

델파이에는 한꺼번에 데이터를 저장하거나 읽는 방법은 없을까요?

지금은 데이터 한건한건을 insert, post하고 있는 실정입니다.



어떡해 해야 속도가 좀 향상될까요???







4  COMMENTS
  • Profile
    방경주 2000.10.27 20:01
    어떤 방법인지 잘 모르겠지마나...대량이구 오라클이면 stored procedure로 해보심

    어떨까여....



    오라클에 내부 프로시져를 생성하구 델파이에서 가져다 쓰는게 더 좋을꺼 같은데..



    허접 답변이었습니다...



    모르시겠음 좀 더 자세히 글 올려 주시고 멜을 주시던가여...^^;



    정향숙 wrote:

    > 안녕하세요~~

    >

    > 아주아주 어려운 문제에 봉착했습니다.. (개인적으로..)

    > 고수님들의 실력을 조금만 빌려주시기 바라면서..

    >

    > 데이터가 비주기적으로 수신되어 오는데, 한꺼번에 많은 데이터가

    > 올라오는 경우가 있습니다.

    > 이때, 데이터를 저장하는라고 다른 운용을 전혀 할 수 없을 시간이

    > 소요될 경우가 있습니다.

    >

    > DB는 오라클을 사용하고 있는데, 오라클의 proc에서 보면 배열을 이용해서

    > 한꺼번에 데이터를 저장하고, 읽고 하는 방법이 있었는데

    > 델파이에는 한꺼번에 데이터를 저장하거나 읽는 방법은 없을까요?

    > 지금은 데이터 한건한건을 insert, post하고 있는 실정입니다.

    >

    > 어떡해 해야 속도가 좀 향상될까요???

    >

    >

    >

  • Profile
    정향숙 2000.10.28 00:40
    방경주 wrote:

    > 어떤 방법인지 잘 모르겠지마나...대량이구 오라클이면 stored procedure로 해보심

    > 어떨까여....

    >

    > 오라클에 내부 프로시져를 생성하구 델파이에서 가져다 쓰는게 더 좋을꺼 같은데..

    >

    > 허접 답변이었습니다...

    >

    > 모르시겠음 좀 더 자세히 글 올려 주시고 멜을 주시던가여...^^;





    이런 방법이 있었군요. (역시.. 글을 올리길 잘했네요요..)

    그러나.. 제가 stored procedure를 한번도 사용해 보질 않았거든요.

    책을 뒤져봤는데, 설명도 제대로 되어있지않구요..



    stored procedure을 사용하는 방법을 간단한 예제와 함께 설명해 주시면

    정말로 정말로 감사하겠습니다.



    좋은 하루 보내세요~~

    답변 주셔서 정말 고맙습니다.



  • Profile
    방경주 2000.10.28 01:11
    예제라...데이터를 어떤식으로 받아서 처리하는지 알면 더 좋을텐데여...

    구럼 간단하게.....

    create or replace procedure pc_ajaa

    ( in_aaNo in varchar2 // 받아오는 인자값들....

    , in_aaYmd in date

    , in_aaname in varchar2

    , in_aacheck in varchar2

    )

    as

    wk_cnt number := 0;

    tot number := 0;

    begin

    for cur in (select * //커서로 데이터를 가져 옵니다...^^

    from ajaa //갖고올 데이터의 테이블

    where aano = in_aaNO

    and aaymd = in_aaymd

    and aaname = in_aaname

    and aacheck = in_aacheck

    )

    loop

    // 이 안에서 커서로 갖고온 데이터를 처리 합니다...

    // 데이터의 처리는 한건씩(레코드단위)로 하게 됩니다..

    tot := cur.ajumsu + cur.bjumsu + cur.cjumsu

    update AjaaUpdate

    set totjumsu = tot

    where aano = cur.aano

    and aaname = cur.aaname

    wk_cnt := wk_cnt + 1;

    commit;

    end loop;

    end;



    흠....이거 쉽게 만들라구 했는데 잘 되었는지 모르겠네여...-_-;

    알고 보면 원리는 간단하져.....여기다 살을 붙이거나 빼면 되져...

    대충 기본이 골격만 설명 드렸는데 도움이 되었음 좋겠구여.....*^^*

    잘 모르시겠음...상황을 정확히 알려 주심 좋겠네여...어떤식으로 할지 모르니 대강으로 밖에 알려드리지 못하겠네여...구럼 이만...(*^-^*)



    정향숙 wrote:

    > 방경주 wrote:

    > > 어떤 방법인지 잘 모르겠지마나...대량이구 오라클이면 stored procedure로 해보심

    > > 어떨까여....

    > >

    > > 오라클에 내부 프로시져를 생성하구 델파이에서 가져다 쓰는게 더 좋을꺼 같은데..

    > >

    > > 허접 답변이었습니다...

    > >

    > > 모르시겠음 좀 더 자세히 글 올려 주시고 멜을 주시던가여...^^;

    >

    >

    > 이런 방법이 있었군요. (역시.. 글을 올리길 잘했네요요..)

    > 그러나.. 제가 stored procedure를 한번도 사용해 보질 않았거든요.

    > 책을 뒤져봤는데, 설명도 제대로 되어있지않구요..

    >

    > stored procedure을 사용하는 방법을 간단한 예제와 함께 설명해 주시면

    > 정말로 정말로 감사하겠습니다.

    >

    > 좋은 하루 보내세요~~

    > 답변 주셔서 정말 고맙습니다.

    >

  • Profile
    정향숙 2000.10.28 08:24
    가르쳐주신 예제로 stored procedure를 구현했더니 간단하게 해결이 되었습니다.

    뭐라고 감사를 드려야 할지...



    근데, 문제가 하나 더 생겼어요.

    제가 짠 프로그램이 어떤 식으로 연결이 되어 있었냐하믄요..



    1. DBGrid를 하나 사용하고 있었습니다.

    (저장한 데이터를 바로바로 디스플레이하기 위해서)



    2. DBGrid에 DataSource를 연결하고 TTable를 연결을 해 놓았어요.

    3. TTable을 이용해서 데이터가 수신되면 데이터를 저장했죠.

    데이터가 insert되면 바로 dbgrid에 적용이 되서 디스플레이가 되었구요.



    지금 stored procedure로 구현을 하고, Datasource에 TStoredProc를 연결했더니,

    DBGrid에 바로 디스플레이가 되지는 않네요.



    어떤식으로 연결을 하면, insert된 데이터를 바로 디스플레이 할 수 있을까요?