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
}
|