我的一个SQL语句如下:
select * from KZ_PCXY where (KZ_HBH='''+Hbh+''') and (KZ_QSRQ = StrToDate(QSRQ))
其中KZ_QSRQ 字段属性为DateTime,QSRQ为一字符串变量,后台数据库为Oracle,执行该语句的时候会出错误:“无效的列名”,我想知道SQL是否正确,请指教。

解决方案 »

  1.   

    select * from KZ_PCXY where KZ_HBH=:Hbh and KZ_QSRQ :=QSRQparambyname('Hbh'):=Hbh;
    parambyname('QSRQ'):=QSRQ //QSRQ不用转换成TDate类型
      

  2.   

    adoquery.close;
    adoquery.sql.clear;
    adoquery.sql.add('select * from KZ_PCXY where (KZ_HBH=' + '"' + Hbh + '") and (KZ_QSRQ = #' + QSRQ + '#');
    adoquery.open;
    其实上层的代码是正确的。而且易读的。
    你试这种方法,这是我当年学VB时用的方法。只是把字符串连在一起而已!
      

  3.   

    这样应该没问题了。'select * from KZ_PCXY where (KZ_HBH='+''''+Hbh+''''+') and (KZ_QSRQ ='+''''+ StrToDate(QSRQ)+'''')
      

  4.   

    KZ_QSRQ = StrToDate(QSRQ))
    StrToDate是DELPHI中的涵数,在SQL中应该用TO_DATE(QSRQ,'YYYYMMDD HH24MISS')
      

  5.   

    select * from KZ_PCXY where (KZ_HBH=:Hbh) and (KZ_QSRQ = to_date(:QSRQ,'yyyy-mm-dd')parambyname('Hbh'):=Hbh;
    parambyname('QSRQ'):=QSRQ;俩参数付字符串既可.
    OK!!!!
      

  6.   

    select * from KZ_PCXY where (KZ_HBH=:Hbh) and (trunc(KZ_QSRQ) = to_date(:QSRQ,'yyyy-mm-dd ')

    select * from KZ_PCXY where (KZ_HBH=:Hbh) and (KZ_QSRQ = to_date(:QSRQ,'yyyy-mm-dd HH24MISS')
    parambyname('Hbh'):=Hbh;
    parambyname('QSRQ'):=QSRQ;俩参数付字符串既可.
    OK!!!!