Q&A

  • SQl문 Error확인좀 부탁드립니다.
* 사용환경 : 델파이5 / Windows 98

* 에러 메시지 : General SQL Error ORA-00936: 식이 없습니다.

눈으로 보기가 좀 어지렵습니다만, 고수님들의 조금한 관심이

저희 초보델파이언에게에는 큰 힘입니다. 또 면목없이..

v_-.-_v

테이블을 3개이고 각필드를 조합을 했습니다. 왜 Error가 나는지



with Qry_PeGugan do

begin

DisableControls;

Close;

SQL.Clear;

SQL.Add('SELECT A.LINE_NAME, A.SRCKEY, A.SRCIFINDEX||(||C.IFNAME||) SRCIFINDEX,');

SQL.Add('C.IP FROMIP, A.DESTKEY, A.DESTIFINDEX|| (||D.IFNAME||) DESTIFNUM,');

SQL.Add('D.IP TOIP, AVG(B.RESPONSE_TIME) IP_AVG, MAX(B.RESPONSE_TIME) IP_MAX,');

SQL.Add('MIN(B.RESPONSE_TIME) IP_MIN');

SQL.Add('FROM NMS_PERESPCONFIG_T A, NMS_PERESPONSE_T B, NMS_REDEVPORT_T C, NMS_REDEVPORT_T D');

SQL.Add('WHERE A.SRCKEY = B.SRCKEY AND A.SRCIFINDEX = B.SRCIFINDEX');

SQL.Add('AND A.DESTKEY = B.DESTKEY AND A.DESTIFINDEX = B.DESTIFINDEX');

SQL.Add('AND A.SRCKEY = C.KEY AND A.DESTKEY = D.KEY');

SQL.Add('AND B.COLLTIME BETWEEN :from AND :to');

SQL.Add('GROUP BY A.LINE_NAME,A.SRCKEY,A.SRCIFINDEX||(||C.IFNAME||),');

SQL.Add('C.IP, A.DESTKEY, A.DESTIFINDEX||(||D.IFNAME||),D.IP');

ParamByName('from').Asdate := DTP_From.Datetime;

ParamByName('to').Asdate := DTP_To.Datetime;

Open;

EnableControls;

end;



끝까지 봐주셔서 감사 합니다.

그럼 RE..좀







3  COMMENTS
  • Profile
    조피디 2000.03.16 20:47


    안녕하세요..

    식이없다는 메세지는 주로 SQL문 문법에서 에러가 나서 그런데요..

    소스를 좀 정리를 해봤더니

    아랫부분..

    SQL.Add('MIN(B.RESPONSE_TIME) IP_MIN');

    SQL.Add('FROM NMS_PERESPCONFIG_T A, NMS_PERESPONSE_T B,

    이부분이 붙어서 SQL문이 됩니다..

    풀어서 얘기하면

    MIN(B.RESPONSE_TIME) IP_MINFROM NMS_PERESPCONFIG_T A, NMS_PERESPONSE_T B,

    이해가시나요?



    필드들하고 FROM문장이 붙어버렸어요..

    다른부분들도 마찬가지입니다..

    한칸식 공백을 주어서 다시 해보시기 바랍니다..



    SQL.Add('MIN(B.RESPONSE_TIME) IP_MIN '); <---

    SQL.Add('FROM NMS_PERESPCONFIG_T A, NMS_PERESPONSE_T B,





    Go100 wrote:

    > * 사용환경 : 델파이5 / Windows 98

    > * 에러 메시지 : General SQL Error ORA-00936: 식이 없습니다.

    > 눈으로 보기가 좀 어지렵습니다만, 고수님들의 조금한 관심이

    > 저희 초보델파이언에게에는 큰 힘입니다. 또 면목없이..

    > v_-.-_v

    > 테이블을 3개이고 각필드를 조합을 했습니다. 왜 Error가 나는지

    >

    > with Qry_PeGugan do

    > begin

    > DisableControls;

    > Close;

    > SQL.Clear;

    > SQL.Add('SELECT A.LINE_NAME, A.SRCKEY, A.SRCIFINDEX||(||C.IFNAME||) SRCIFINDEX,');

    > SQL.Add('C.IP FROMIP, A.DESTKEY, A.DESTIFINDEX|| (||D.IFNAME||) DESTIFNUM,');

    > SQL.Add('D.IP TOIP, AVG(B.RESPONSE_TIME) IP_AVG, MAX(B.RESPONSE_TIME) IP_MAX,');

    > SQL.Add('MIN(B.RESPONSE_TIME) IP_MIN');

    > SQL.Add('FROM NMS_PERESPCONFIG_T A, NMS_PERESPONSE_T B, NMS_REDEVPORT_T C, NMS_REDEVPORT_T D');

    > SQL.Add('WHERE A.SRCKEY = B.SRCKEY AND A.SRCIFINDEX = B.SRCIFINDEX');

    > SQL.Add('AND A.DESTKEY = B.DESTKEY AND A.DESTIFINDEX = B.DESTIFINDEX');

    > SQL.Add('AND A.SRCKEY = C.KEY AND A.DESTKEY = D.KEY');

    > SQL.Add('AND B.COLLTIME BETWEEN :from AND :to');

    > SQL.Add('GROUP BY A.LINE_NAME,A.SRCKEY,A.SRCIFINDEX||(||C.IFNAME||),');

    > SQL.Add('C.IP, A.DESTKEY, A.DESTIFINDEX||(||D.IFNAME||),D.IP');

    > ParamByName('from').Asdate := DTP_From.Datetime;

    > ParamByName('to').Asdate := DTP_To.Datetime;

    > Open;

    > EnableControls;

    > end;

    >

    > 끝까지 봐주셔서 감사 합니다.

    > 그럼 RE..좀

    >

    >

    >

  • Profile
    류종택 2000.03.16 08:18
    우선 한 가지 간단한 버그만 언급합니다..

    SQL문은 다 읽어보지 못했습니다 죄송..

    SQL문 에러라면 SQL Plus를 통해 잡는 것이 더욱 빠를 것이고요..



    여하튼 SQL문을 무작정 동적으로 집어 넣으면 에러가 발생합니다..

    디자인 타임에 SQL을 넣고..

    각 파라메터의 형태를 지정해주시던가..

    (Query.Params 프로퍼티를 참고 하세요..)

    코딩으로 할 때는 아래와 같은 형식으로 각 파라메터의 형태를 지정해 주세요..

    Query.Params.Items[0].ParamType:= ptInput;

    Query.Params.Items[0].DataType:= ftString;





    From 류..





    Go100 wrote:

    > * 사용환경 : 델파이5 / Windows 98

    > * 에러 메시지 : General SQL Error ORA-00936: 식이 없습니다.

    > 눈으로 보기가 좀 어지렵습니다만, 고수님들의 조금한 관심이

    > 저희 초보델파이언에게에는 큰 힘입니다. 또 면목없이..

    > v_-.-_v

    > 테이블을 3개이고 각필드를 조합을 했습니다. 왜 Error가 나는지

    >

    > with Qry_PeGugan do

    > begin

    > DisableControls;

    > Close;

    > SQL.Clear;

    > SQL.Add('SELECT A.LINE_NAME, A.SRCKEY, A.SRCIFINDEX||(||C.IFNAME||) SRCIFINDEX,');

    > SQL.Add('C.IP FROMIP, A.DESTKEY, A.DESTIFINDEX|| (||D.IFNAME||) DESTIFNUM,');

    > SQL.Add('D.IP TOIP, AVG(B.RESPONSE_TIME) IP_AVG, MAX(B.RESPONSE_TIME) IP_MAX,');

    > SQL.Add('MIN(B.RESPONSE_TIME) IP_MIN');

    > SQL.Add('FROM NMS_PERESPCONFIG_T A, NMS_PERESPONSE_T B, NMS_REDEVPORT_T C, NMS_REDEVPORT_T D');

    > SQL.Add('WHERE A.SRCKEY = B.SRCKEY AND A.SRCIFINDEX = B.SRCIFINDEX');

    > SQL.Add('AND A.DESTKEY = B.DESTKEY AND A.DESTIFINDEX = B.DESTIFINDEX');

    > SQL.Add('AND A.SRCKEY = C.KEY AND A.DESTKEY = D.KEY');

    > SQL.Add('AND B.COLLTIME BETWEEN :from AND :to');

    > SQL.Add('GROUP BY A.LINE_NAME,A.SRCKEY,A.SRCIFINDEX||(||C.IFNAME||),');

    > SQL.Add('C.IP, A.DESTKEY, A.DESTIFINDEX||(||D.IFNAME||),D.IP');

    > ParamByName('from').Asdate := DTP_From.Datetime;

    > ParamByName('to').Asdate := DTP_To.Datetime;

    > Open;

    > EnableControls;

    > end;

    >

    > 끝까지 봐주셔서 감사 합니다.

    > 그럼 RE..좀

    >

    >

    >

  • Profile
    최성진 2000.03.17 03:30
    SQL.Add('GROUP BY A.LINE_NAME,A.SRCKEY,A.SRCIFINDEX,C.IFNAME,');

    SQL.Add('C.IP, A.DESTKEY, A.DESTIFINDEX,D.IFNAME,D.IP');



    이렇게 해보세요..