begin
 str_product:='insert into tmp_456 values (%s)';
 SQL.Clear;
 SQL.add( format(str_product,[product_id]))  ;
 prepare;
 execSQL;
 end;
这样程序可以正常运行,
但我把他改为
begin
 str_product:='insert into tmp_456 values ([product_id])';
 SQL.Clear;
 SQL.add(str_product)  ;
 prepare;
 execSQL;
 end;这样编译也能通过,但程序运行时报错
我想是不是因为程序没有先把[product_id]送到Oracle中?

解决方案 »

  1.   

    ?????
    肯定出错,编译的时候[product_id]被认为是字符串,程序运行,数据提交当然出错了。搞不懂你在想什么
      

  2.   

    values ([product_id])';没有数据值.
      

  3.   

    难道只能这样吗?
    begin
     str_product:='insert into tmp_456 values (%s)';
     SQL.Clear;
     SQL.add( format(str_product,[product_id]))  ;
     prepare;
     execSQL;
     end;
    还有没有其它的办法?对不起,新手提问 ,请大家耐心!~~
      

  4.   

    product_id是你在Delphi里定义的变量
    你直接把他放到SQL里传给Oracle?
    你强
      

  5.   

    呵,我也知道是这个原因了,但我还想知道这个SQL还有没有别的写法?
      

  6.   

    定义Param
    具体做法看帮助
      

  7.   

    str_product:='insert into tmp_456 values ('''+product_id+''')';