本帖最后由 xx_mm 于 2014-10-13 17:12:47 编辑

解决方案 »

  1.   

    @v_ID没有定义,提示很清楚啊
      

  2.   

    实现思路很简单,上一行执行的Insert SQL语句产生的ID给下面的SQL语句用,之前用Oracle/SQL Server 没显得高踩坑了!!
      

  3.   

    可能是mysql的分析器帮你处理了
    这个语句复制到sqlserver里执行也会报同样的错误
      

  4.   

    INSERT INTO iv_invoicehead(DJBH,SHR,DPJC,ZFJE,FPTT,CKMC,CreateTime) 
    Values('DD00102637','俞继红','21克天猫旗舰店','299.0000','俞继红','正品仓',NOW()); 
    //SET @v_ID = last_insert_id();
    INSERT INTO iv_invoiceitems(HeadID,SPDM,SPMC,SJDJ,SJJE,BZJE,ZK,SL,BZ,ZL,HJZL)
    Values( last_insert_id(),'c.f.03.100.01.01','[mc001s] 官方标配 白色标准版','299.0000','299.0000','498.0000','0.6004','1.0000',' 组合商品:c.f.03 mc001s(白色标准版)','450.0000','450.0000');改成这有试试
      

  5.   

    这不是SQL Server,sql Server语法相对明了,这里在查询分析器可以数据可以插进去,MYSQL 不行,问了几个都说这么写没错!程序却报错?和解!?
      

  6.   

    这样跟我的逻辑有悖,head插入之后,后面可能不止一行可能多行呢!而且必须在一个事务中
      

  7.   

    那你写成存储过程吧,存储过程里先定义@v_ID
      

  8.   

    declare @v_ID int;  //加上这句呢?我对mysql不太了解
    SET @v_ID = last_insert_id();
      

  9.   

    那只能把第一条insert语句和后面的insert语句分两次执行了,BeginTrans... //事务开始
    cmd.CommandText = "insert ..."
    然后获取最后插入的id
    cmd.CommandText="insert ..."Commit; //提交事务