我的程序有下面片段:......//说明:下面用到的所有变量都事先做了定义
s1:='select s_id from table1 where a_nbr='+quotedstr(v_a_nbr);
query_bi.sql.text:=s1;
qeery_bi.open;v_s_id:=query_bi.fields[0].asstring;query_baocun_2.sql.clear;
query_baocun_2.sql.add('update table2 set s_id=:v_s_id where a_nbr=:v_a_nbr');
query_baocun_2.execsql....说明:我代码的目的是循环从table1表里(ORACLE数据库)取得s_id的值,然后,修改table2(SQL SERVER2000)s_id的值

解决方案 »

  1.   

    query_baocun_2.sql.add('update table2 set s_id=:v_s_id where a_nbr=:v_a_nbr');
    query_baocun_2.execsql;
    循环执行了若干遍,没有报错,为什么骨灰s_id的值?我的写法哪里错了?
      

  2.   

    query_baocun_2.sql.add('update table2 set s_id=:v_s_id where a_nbr=:v_a_nbr');
    query_baocun_2.execsql;
    循环执行了若干遍,没有报错,为什么不会更新s_id的值?我的写法哪里错了?说明:
    v_s_id和v_a_nbr----已经在前头取到了确定的值,我一步步跟踪能看到他们的值
      

  3.   

    你的两个参数都没有赋值(:v_s_id,:v_a_nbr)在执行前,要先赋值。
    ......
    query_baocun_2.Parameters.ParamValues['v_s_id'] := xxxx;
    query_baocun_2.Parameters.ParamValues['v_a_nbr'] := yyyyy;
    query_baocun_2.execsql;
      

  4.   

    你的参数在加入SQL时定义的,没看到你在其后赋值,那会有值?(在定义之前赋值应是无效吧)。
      

  5.   

    建议你最好将那个更新语句在MSSQL数据库执行一下试试,就
    知道有没有问题了,更新语句格式如下:
    UPDATE 表名
       SET 字段名=新值
     WHERE 字段名=旧值