下面代码为正确代码:
ADOQuery1.Parameters.ParamValues['V1;V2;V3;'] := vararraryof(['1','2','3']);问题:
要实现上面语句的相同的功能。但我有一个变量为
MyString:='''1'',''2'',''3''';
我不想把MyString分解成 '1' 和 '2' 和 '3' 。
可不可以不用vararrayof,而用其他方法实现上面语句同等功能?
前提条件是不要分解我的MyString,但可以改变MyString的格式。如改成MyString:='1,2,3';说了这么些不知道我说清楚了没有。^-^ 
请大侠们帮忙。
另,我就只有79分了。帮帮忙。

解决方案 »

  1.   

    windindance(风舞轻扬·白首为功名) :
    你这么多星都说没有办法了。看来我真的只要把MyString进行分解了。
    但分解很费CPU的。郁闷。加油。再等两天结贴。
      

  2.   

    aiunong(凡):
     TStringList? 我只有一个字符串,不是要一List字符串。
      怎么实现?能给出代码不?
      

  3.   

    分解很费CPU?你的这个操作会放在循环中吗?
    如果不在循环中,分解几乎不会影响性能。
    如果在循环中,你的算法似乎可以优化。
      

  4.   

    还可以把几个参数分开来赋值,用copy,Pos来截取出相应的值,赋给相应的参数
      

  5.   

    windindance(风舞轻扬·白首为功名):是这样的。每次从文件中读取一行字串,然后insert到数据库中;文件在不断的增长。所以一直在进行读文件增长部分,一直在insert。不知有更好的方法没有。
      

  6.   

    windindance(风舞轻扬·白首为功名):
    如果我有几百个字段呢?要把String分解成几百份也是这样的吗?请给出分解方法。谢谢!
      

  7.   

    如果真的有几百个字段,那你用存储过程保存不是好的方案,还不如直接生成INSERT语句好。
    string分解:
    var sl :TStringList;
    sl :=TStringList.Create;
    sl.CommaText := s;  //s是逗号分割的字符串
    sl.Free;
      

  8.   

    windindance(风舞轻扬·白首为功名) :我目前是直接用ADO进行直接 insert 的。
    但这样下去ORACLE的缓存命中率会一直下降。降底了ORACLE整体性能。
    我是想用动态SQL。那么ORACLE缓存中就只保存一条SQL语句,就不用每次INSERT执行前都进行分析,然后再执行。提高速度,也提高ORACLE整体性能。请帮我想想办法。
      

  9.   

    windindance(风舞轻扬·白首为功名) :忙的时候每秒100条左右。