구굴링으로 뒤져보니.. DBExpress의 버그라는 얘기가 여기저기 보이는데.. 정말 그런 건지?
이걸로 꽤 로직을 진행했는데.. 다 바꿔야 하는 지? ㅠ.ㅠ;;;;
땅주인 님이 쓰신 글 :
: RAD Studio 2009
: MySQL에 Stored Procedure를 만들고 SP를 호출하는 스크립트인데, 파라메타에 값을 넣고 호출하면
: List index out of bounds(26) 이라고 나옵니다.
: QnA에서는 리스트의 배열 첨자가 틀렸다는 답이 나와 있는데..
: 여기서는 그냥 ADO 커넥션에서 SP를 실행하는 스크립트인데..왜 이런 에러가 나오는 지 모르겠습니다.
: 한가지 의심은.. 파라메타가 무자게 많다는 것, 74개입니다.(어쩔수없는 상황이라..)
: 파라메타가 몇 개안되는 SP는 잘 됩니다.(다른 SP를 호출하는 다른 함수들은 정상적으로 처리됩니다.)
:
: 혹시 Parameter의 값이 NULL로 설정되면 이럴 수가 있는 지?
:
: 26번재 List 첨자가 잘못되었다는 것인데.. 파레메터의 26번재 값은 숫자값이고 별 다른 것이 없습니다.
: 어떤 문제가 있는 것인 지? Help me..
:
:
: bool CExamDetail::SPFinish()
: {
: int iResult = 0; // SP Return value : 0: ok, -1:error
: TSQLStoredProc *pProc = NULL;
: try {
: pProc = DM->GetProc(); // SP Queue에서 Free 상태의 SP를 가져온다.
: if ( pProc == NULL ) {
: return false;
: }
: pProc->StoredProcName = "SPFinish";
:
: pProc->Params->Clear();
: pProc->Params->CreateParam(ftString, "vFlag", ptInput);
: pProc->Params->CreateParam(ftString, "vExamDate", ptInput);
: ....<<중략>> Parameter => 73개
: pProc->Params->CreateParam(ftInteger, "vResult", ptOutput);
:
: pProc->Params->ParamByName("vFlag")->Value = EXAM_MODE_TO_STR(enExamMode);
: pProc->Params->ParamByName("vExamDate")->Value = ExamDate;
: ....<<중략>>
:
: pProc->ExecProc(); // 여기서 에러..
:
: iResult = pProc->Params->ParamByName("vResult")->Value;
: DM->ReleaseProc(pProc); // SP 자원 해재(SP Queue에 다시 넣는다.
:
: } catch ( Exception &e ) {
: DM->ReleaseProc(pProc);
: #ifdef _DEBUG
: ShowMessage(e.Message);
: #endif
: }
: return ( iResult == 0 ) ? true : false; // 0: ok, -1: error
: }
: |