Q&A

  • 오라클 프로시져 호출 관련..
stored procedure 콤포넌트를 사용해서 해야 한다고 나와는 있는데..
어떻게 해야 하는지..잘 안되네요..
다음과 같이 코딩했습니다. 머가 잘못
3  COMMENTS
  • Profile
    착한천사 2004.09.23 03:32
    착한천사, 김경록입니다..

    문제점이라고 생각하고 먼저 확인해 볼 것들
    1.  Params.Clear 호출
    2.  TStoredProc 컴포넌트에서 Procedure 목록이 보이는지
         체크하는 것


    첫번째, Params.CreateParam 호출 이전에
    Params.Clear를 먼저 호출해 주시구요..

    두번째, StoredProc 컴포넌트의 ProcName을 마우스로 클릭한 후
    호출하고자 하는 프로시져가 나타나는지 확인해 보십시오.
    일단, 확인된다면,
    문제가 없는 것입니다..
    (만약, 나타나지 않는다면, Connection에서
    해당 Procedure를 찾지 못하는 결과이므로,
    Connection관련된 컴포넌트(TDatabase,TADOConnection등..)을
    확인해 보셔서 제대로 접속이 되는지 확인 바랍니다.)

    만약, 나타난다면, 그곳에 나타나는 ProcName을 숙지하시고,
    StoredProcName:= 란에 대입해 주시면 되겠습니다.
    (혹시나, Procedure끝에 ";1"이라는 값이 있다면,
    무시하시기 바랍니다..
    즉, Procedure명만 사용하시기 바랍니다..)


    물론, DB-Link든지 뭐든지 간에..
    모두, DB접속을 한 후 Access가 된다면,
    일반 Procedure처럼 사용가능할 것입니다..


  • Profile
    최영환 2004.09.23 05:53
    하루종일 이것땀시 죽는지 알았습니다..제가 StoredProc 를 처음써봐서 확실

    한 결론인지는 모르겠지만 착한천사님 말대로 ProcName 에 해당 프로시저가

    나올려면 우선 StoredProc 자체에서 DB를 connect 할수 있어야 합니다.

    그러나 밑에서 처럼 DBLink를 사용하다 보니 실제로 코딩시에 DB접속을 할수

    가 없습니다. 물론 일반적인 select,insert,update,delete는 DBlink가 생성되

    있는 서버에 접속을 하고 해당 SQL에 @XXX만 부쳐주면 되겠지요

    그렇지만 StoredProc 오브젝트인스펙터에 DBName에 XXXDB@XXX

    라고 쓸수 없더군요..물론 써지기야 하지만 연결이 안되고..연결이 되지 않으

    니 ProcName에도 해당 프로시져 목록은 나타나질 않지요..

    실행시에도 내부적으로 어떻게 돌아가는지는 모르겠지만 희한한 오라클 에러

    를 뿌리더군요.. 또 한가지 프로시져는 되지만 패키지내에 있는 프로시져는

    되지 않더군요..역시 ProcName에 프로시져만 뜨지 패키지는 뜨질 않습니다

    펑션은 뜨는지는 확인 안해봤습니다만..아마 펑션도 안뜨리라 예상됩니다..

    고로 제가 내린 결론은 직접 연결 가능한 DB에 기 생성되어져 있는 프로시져

    만 사용 가능한게 아닌가 싶네요..

    결국 프로시져 내에다가 모든 쿼리문에 DBLink를 걸고 프로시져 자체는 직접

    연결 가능한 DB에 놔두고 실행하게 되었습니다..패키지로 되어있던 프로시져

    를 단독으로 빼냈구요..

    해결을 하기는 했는디..이거 영..야메 같아서..ㅎㅎ;;

    다른 좋은 방법을 아시는 분 있으시면 리플달아주세요~
  • Profile
    착한천사 2004.09.26 02:31
    착한천사 김경록입니다..

    님의 마지막 문제인 db-link를 이용한 문제는
    당연히 아실꺼라고 판단을 해서.. (*^^*)
    답변에 써 놓질 않았네요..

    방법은
    synonym을 이용한 함수호출 방법입니다..
    즉, db-link에서 호출하는 함수에 대한
    synonym을 생성하여 이 synonym을 호출하면 되겠습니다..
    답이 되었기를 바랍니다..

    ps.
    procedure, funcion, table등등
    object에 대한 synonym은 모두 생성할 수 있으니..
    참고하시기 바랍니다.
    혹시, 제가 또 빼 먹었나요?