델파이에서 TStoredProcedure를 사용할 경우에 컴포넌트를 올려놓고 미리 지정된 스토어드 프로시저를 실행할 경우에는
Prepare에 의해서 자동으로 파라미터들이 생성 되어 사용하는데 전혀 문제가 없습니다..
그러나 동적으로 TStoredProcedure를 Create하여 사용할 경우, 또 Parameter를 자동생성하지 않고 수동으로 CreateParameter를 이용하여 생성할 경우에는 생성하는 순서가 StoredProcedure를 만들때 선언한 파라미터의 순서와 동일하게 Create를 해 주어야만 정상적인 파라미터 전달이 됩니다. 이는 파라미터 전달 순서와 밀접한 관계가 있는듯 합니다.
ads := TADOStoredProc.Create(nil); try searchStr := sm.StringReplace(AKeyword, ' ', ',', [rfReplaceAll]); ads.ConnectionString := DB4_CONNECTION_STR; ads.ProcedureName := 'dbo.usp_local_search_list'; ads.Parameters.Clear; ads.Parameters.CreateParameter('@keyword_list', ftString, pdInput, 50, null); ads.Parameters.CreateParameter('@operation', ftString, pdInput, 6, null); ads.Parameters.CreateParameter('@sct', ftString, pdInput, 5, null); ads.Parameters.CreateParameter('@article_count', ftInteger, pdInput, 4, 30); //Default 값 지정 ads.Parameters.CreateParameter('@page_index', ftInteger, pdInput, 4, 1); //Default 값 지정 ads.Parameters.CreateParameter('@term', ftInteger, pdInput, 4, null); ads.Parameters.CreateParameter('@debug', ftInteger, pdInput, 4, 0); // Default 값 지정 ads.Parameters.ParamByName('@keyword_list').Value := searchStr; ads.Parameters.ParamByName('@operation').Value := 'AND'; ads.Parameters.ParamByName('@sct').Value := ASCT; ads.Parameters.ParamByName('@term').Value := 3; ads.Open; result := LoadSearchResult; ads.Close; finally ads.Free; end;
'프로그래밍 > Delphi' 카테고리의 다른 글
델파이 format 관련 팁 (1) | 2010.02.01 |
---|---|
MSSQL StoredProcedure로부터 리턴 값 받기 (1) | 2010.01.22 |
델파이에서 TStoredProcedure의 CreateParameter 사용시 주의점 (0) | 2010.01.18 |
작업관리자에만 나타나는 프로세스 강제로 종료하기 (1) | 2009.12.21 |
Acrobat DDE : DocSaveAs 사용예 - VB예제 (0) | 2009.12.16 |
xnView:GFL_SDK GFL_BITMAP을 TBitmap으로 복사 (2) | 2009.12.04 |