안녕하세요~ ^^ 오늘도 날씨가 꾸리꾸리 하내용 ^^
소주를 생각나게하는 날씨지만.. 일땜시 ㅠㅠ;;
제가 질문드리고싶은건요.. 밑에 소스처럼 쿼리문을 하나 작성했습니다
Sid 의 값은 '243','456' <<요렇게 연결된 문자입니다.
이 쿼리를 돌리면.. 에러가 나는데요.. 에러내용은..
Dynamic SQL Error
SQL error code = -303
arithmetic exception, numeric overflow, or string truncation
이런에러가 나는데요.. 혹시 Sid 들어가있는 연결된 문자때문인지요..
도저히 모르겠습니다 ㅠㅠ;; 어제부터 여기저기 찾아보는데 답이 안나오내요.. ㅠㅠ
이런문제를 아시는 고수님계시면 관심 부탁드립니다 ㅠㅠ;;
with DM.ibcqrCheck do
begin
Active := False;
SQL.Clear;
SQL.Add('SELECT COUNT(A.ID) AS CNT ');
SQL.Add(' FROM TEST A ');
SQL.Add(' WHERE A.ID IN (:AID) ');
ParamByName('AID').AsString := Trim(Sid);
Active := True;
end;
그럼 오늘도 즐겁고 행복한하루 보내시구요~ 이따가 점심 맛나게 드시구요~
감기조심하셔용~ *^^*
변수로 넣으시겠다면
with DM.ibcqrCheck do
begin
Sid1 := '243';
Sid2 := '456';
Active := False;
SQL.Clear;
SQL.Add('SELECT COUNT(A.ID) AS CNT ');
SQL.Add(' FROM TEST A ');
SQL.Add(' WHERE A.ID IN (:AID1, :AID2) ');
ParamByName('AID1').AsString := Trim(Sid1);
ParamByName('AID2').AsString := Trim(Sid2);
Active := True;
end;
이런식으로 쓰셔야 합니다.
(오라클이랑 MS-SQL은 다를 수도...ㅎ;)
Sid에 몇개의 인자가 들어갈지 알 수 없다면 StringList로 만들어서 입력하시면 좀 편하실 겁니다.
with DM.ibcqrCheck do
begin
SidList.Add('243');
SidList.Add('456');
Active := False;
SQL.Clear;
SQL.Add('SELECT COUNT(A.ID) AS CNT ');
SQL.Add(' FROM TEST A ');
SQL.Add(' WHERE A.ID IN (''' + StringReplace(SidList.CommaText, ',', ''',''', [rfReplaceAll]) + ''')');
Active := True;
end;
대충 이런 형태로...