cyoeki 2020-04-03 01:44 采纳率: 100%
浏览 1729

SQL在navicat里执行成功,但是程序中报错

由于是在Oracle上执行的,所以是没有Values关键字的

<insert id="insert">
        insert into CARGO_CONTENTS (CARGO_ID,MATE_ID,CASE_NUM,REMARK,SPEC,EQUIPMENT_TYPE_ID,CLABS)
        select * from
        <foreach open="(" close=")" collection="contents" item="item" index="index" separator="UNION ALL">
            select
            #{item.cargoID} as cargoId,
            #{item.mateID} as mateId,
            #{item.caseNum} as caseNum,
            #{item.remark} as remark,
            #{item.spec} as spec,
            #{item.equipmentTypeID} as equipmentTypeID,
            #{item.clabs} as clabs
            from DUAL
        </foreach>
    </insert>

图片说明图片说明
图片说明

  • 写回答

2条回答 默认 最新

  • renkai721 2020-04-03 02:31
    关注

    第一,inert语法后面没有逗号和value(),请仔细检查。
    第二,select * from 后面如果是for循环的临时表,那么这一段代码需要大小括号包围并且起一个临时名字。

    评论
  • 「已注销」 2020-04-03 06:01
    关注

    区别在于你在navicat中插入的是一条,那最外面的select * from去掉改成下面这样试试。另外insert into 表 select 语句不管在oracle还是mysql都是可以省略values关键字的

        <foreach collection="contents" item="item"  separator="UNION ALL" close=";">
        <trim prefix="(" suffix=")" suffixOverrides="UNION ALL" >
            select 
            <trim suffixOverrides="," >
               #{item.cargoID} as cargoId,
                #{item.mateID} as mateId,
                #{item.caseNum} as caseNum,
                #{item.remark} as remark,
                #{item.spec} as spec,
                #{item.equipmentTypeID} as equipmentTypeID,
                #{item.clabs} as clabs
             </trim>
             from dual
        </trim>
        </foreach>
    
    评论
    God, 2022-12-29 09:40

    你好 请问解决了吗 我也碰到了同样的问题

    回复
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部