SQLString := '''a'',''b'')';
                  ~~~~~~~~\这儿的括号好象有问题。这样吧,
你在其中加一句
ShewMessage(Query1.SQL.Text);
仔细看看SQL语句有没有问题。也可以用SQL Monitor 跟踪一下。

解决方案 »

  1.   

    就是用SQL Monitor 跟踪一下
      

  2.   

       请详细看两个的差别:
       第一个是:
     Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN (''a'',''b'')';
       第二个是:(替代后)
     Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN (''a'',''b''))'
       你先改正后试试再说吧。
      

  3.   

    Sorry,由于我的一时疏忽,第二个SQL语句中多了半个括号')',实际上是没有的。还需请教各位,我再把这个SQL语句写入到存储过程(Oracle)中后,就出现了,直接写入可以,传参数不可以的问题,这是怎么回事呢?
      

  4.   

    你可以改为:
      SqlString:='(''a'',''b'')';
      Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN  '+SQLString; 
      

  5.   

    查看两种情况下 Query1.SQL.Text 被赋值以后有什么不同?!
      

  6.   

    你把SQLstring代入语句看看结果如下:
    select * from aTable where aField IN (''d''.''b''))
    知道原因了吧!!!关键是你没把'处理好,
    正确的SQLstring:=''a','b'';
    你再看看,好象你的句子里有两个')';
    引号的原则是:单引号在字符串中用''表示,
    但是既然SQLstring已经是字符串那么你的SQLstring赋值,就错了。
    试试看,不行再找我。