sqlstr:='select COURSENAME||'' ''||CLASSROOMNAME  cc_name '+
     ' from '+
       //课程名 上课教室 
     '  (SELECT a.COURSENAME,c.NAME CLASSROOMNAME,1 ord,a.TEACHINGCLASSID,a.TERMID  '+
   '   FROM CARESULT a,CLASSROOM c '+
   '   where a.CLASSROOMID=c.CLASSROOMID(+) and  WEEKDAYno=''1'' and CLASSNO=''1'' and '+
       '      a.TERMID='''+termID+''' and TEACHINGCLASSID in '+
       '     (select TEACHINGCLASSID from Course_Classes where classNO='''+dm.Qry_CaClasses.FieldByName('classNO').AsString+''' ) '+
     '   GROUP BY a.COURSENAME,c.NAME ,a.TEACHINGCLASSID,a.TERMID '+
   '   union  '+
     //上课周次 上课老师
   '  SELECT Fun_Ca_Getweekno(a.WEEKDAYNO,a.CLASSNO,a.TEACHINGCLASSID) week,b.EMPLOYEENAME,2 ord,  '+
   '      a.TEACHINGCLASSID,a.TERMID   '+
   '  FROM CARESULT a,V_CA_TEACHER b  '+
   '  where a.TEACHINGCLASSID=b.TEAMID(+) and  WEEKDAYno=''1'' and CLASSNO=''1''  '+
       '     and a.TERMID='''+termID+''' and TEACHINGCLASSID in '+
       '     (select TEACHINGCLASSID from Course_Classes where classNO='''+dm.Qry_CaClasses.FieldByName('classNO').AsString+''' ) '+
   '  GROUP BY a.WEEKDAYNO,a.CLASSNO,a.COURSENAME,b.EMPLOYEENAME,a.TEACHINGCLASSID,a.TERMID) '+
     ' ORDER BY TERMID,TEACHINGCLASSID,ord  ';
  dm.Qry_select.Close;
  dm.Qry_select.SQL.Clear;
  dm.Qry_select.SQL.Add('sqlstr');
  dm.Qry_select.Open ;上面的代码错误提示:无效SQL语句
可是我的SQL在oracle中执行没有问题呀

解决方案 »

  1.   

    Open之前先showmessage一下看看你的SQL语句是不是有问题
      

  2.   

    dm.Qry_select.SQL.Add('sqlstr'); 
    //去掉''引號,sqlstr本來是變量,不是字串
      

  3.   

    这么长应该没有问题,我有写过更长的语句, 应该是像phoebuswu() 所说的,多了个引号
    dm.Qry_select.SQL.Add('sqlstr'); //去掉''
      

  4.   

    我写过更长的,没有问题,
    dm.Qry_select.SQL.Add('sqlstr');--这个当然有问题了,你把字符窜'sqlstr'传进去了。
    dm.Qry_select.SQL.Add(sqlstr);--应该这样。
      

  5.   

    应该没有超过限制吧。
    dm.Qry_select.SQL.Add('sqlstr');这里有问题,有了''就变成引用sqlstr这个字符串了。你去掉引号后再试试。
      

  6.   

    出现了很明显的错误问题:
    dm.Qry_select.SQL.Add('sqlstr');
    =======〉
    dm.Qry_select.SQL.Add(sqlstr);
      

  7.   

    能写出那么长的SQL语句,会出现这种错误,太离谱了吧。dm.Qry_select.SQL.Add('sqlstr');换成dm.Qry_select.SQL.Add(sqlstr);
      

  8.   

    服务器在本机或局域网内是没限制的
    在外网上就有限制
    不过在这错误很明显:
    dm.Qry_select.SQL.Add('sqlstr');
    换成
    dm.Qry_select.SQL.Add(sqlstr);
      

  9.   

    有限制,但是一般有 64k, 你这么点sql算什么,应当是本身sql写错了人家几个page的sql都能做呢
      

  10.   

    人家几个page的sql都能做呢
    --
    做什么呀
    要这么长的SQL??
      

  11.   

    人家几个page的sql都能做呢
    --
    对呀,这么长的SQL为什么不写在后台
      

  12.   

    一个字符串长度不能超过254个字符,如SQL语句很长可分成几句来书写。
    SQL.add(......);
    SQL.add(......);
      

  13.   

    嗯 问题解决 谢谢各位热心的兄弟姐妹们sql的长度每行不超过254个字符.