weixin_37306052 2018-03-07 09:41 采纳率: 35.3%
浏览 786
已采纳

oracle数据库oracle数据库增不进去数据

CREATE OR REPLACE PROCEDURE PROC_IMPORT_VILLAGE_DATA AUTHID CURRENT_USER AS

zhs VARCHAR2(126);
zrks VARCHAR2(126);
zrcs VARCHAR2(126);
pkhs VARCHAR2(126);
pkrks VARCHAR2(126);
dbrks VARCHAR2(126);
dbhs VARCHAR2(126);
wbrks VARCHAR2(126);
wbhs VARCHAR2(126);
ssmzrks VARCHAR2(126);
fnrks VARCHAR2(126);
cjrks VARCHAR2(126);
ldlrk VARCHAR2(126);
wcwgrs VARCHAR2(126);
villageid VARCHAR2(126);
p VARCHAR2(126);
--public VARCHAR2(126) := '0';

cursor cur is
select * from village_import; --定义游标

cursor dict is
SELECT *
FROM TBL_SYS_DICT D
WHERE D.DICT_TYPE_ID =
(SELECT DT.DICT_TYPE_ID
FROM TBL_SYS_DICT_TYPE DT
WHERE DT.DICT_TYPE_ID = '188FF57D8BF06D2CE0537E64120AF200')
ORDER BY D.DICT_VALUE ASC;
BEGIN

for temp in cur loop

--temp为临时变量名,自己任意起
zhs     := temp.总户数;
zrks    := temp.总人口数;
zrcs    := temp.自然村数;
pkhs    := temp.贫困户数;
pkrks   := temp.贫困人口数;
dbrks   := temp.低保人口数;
dbhs    := temp.低保户数;
wbrks   := temp.五保人口数;
wbhs    := temp.五保户数;
ssmzrks := temp.少数民族人口数;
fnrks   := temp.妇女人口数;
cjrks   := temp.残疾人口数;
ldlrk   := temp.劳动力人数;
wcwgrs  := temp.外出务工人数;
villageid := temp.村主键;

for dd in dict loop

 if dd.dict_value = 'B2' then p := temp.总户数 ; end if;
 if dd.dict_value = 'B3' then p := temp.总人口数 ; end if;
 if dd.dict_value = 'B1' then p := temp.自然村数 ; end if;
 if dd.dict_value = 'B2a' then p := temp.贫困户数 ; end if;
 if dd.dict_value = 'B3a' then p := temp.贫困人口数 ; end if;
 if dd.dict_value = 'B3b' then p := temp.低保人口数 ; end if;
 if dd.dict_value = 'B2b' then p := temp.低保户数 ; end if;
 if dd.dict_value = 'B3c' then p := temp.五保人口数 ; end if;
 if dd.dict_value = 'B2c' then p := temp.五保户数 ; end if;
 if dd.dict_value = 'B3d' then p := temp.少数民族人口数 ; end if;
 if dd.dict_value = 'B3e' then p := temp.妇女人口数 ; end if;
 if dd.dict_value = 'B3f' then p := temp.残疾人口数 ; end if;
 if dd.dict_value = 'B4' then p := temp.劳动力人数 ; end if;
 if dd.dict_value = 'B4a' then p := temp.外出务工人数 ; end if;

  insert into tbl_fil_village_basic
    (pk_village_basic_id,
     fk_village_id,
     fk_dict_name,
     basic_value,
     stat_year,
     create_time,
     creater,
     creater_org,
     year)
    select sys_guid(),
           villageid,
           dd.dict_value,
           p,
           '2018',
           to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
           'admin',
           '',
           '2018'
      from dual;
  commit;
end loop;

end loop;

END PROC_IMPORT_VILLAGE_DATA;

  • 写回答

3条回答 默认 最新

  • niaonao 2018-03-08 05:37
    关注
     select sys_guid(),
               villageid,
               dd.dict_value,
               p,
               '2018',
               to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
               'admin',
               '',
               '2018'
          from dual;
    

    语句的执行结果是多条记录

     insert into tbl_fil_village_basic
        (pk_village_basic_id,
         fk_village_id,
         fk_dict_name,
         basic_value,
         stat_year,
         create_time,
         creater,
         creater_org,
         year)
    

    后面跟具体的数据或占位符,多个记录用foreach遍历,就是说这样写是语法错误

     insert into testtable1(col1) select col2 from testtable2
    

    正确使用

     insert into cardtable (pk_system, name, code,
            i18n, gateway, radiodatacontroller,
            radiodataassociate, combodatamodel, tag,
            secretkey,system, tenant, ts, dr)
             <foreach collection="list" item="item" index="index" separator="union" open="(" close=")">
                select
                #{item.pksystem,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, #{item.code,jdbcType=VARCHAR},
                #{item.i18n,jdbcType=VARCHAR}, #{item.gateway,jdbcType=VARCHAR},
                #{item.radiodatacontroller,jdbcType=VARCHAR},
                #{item.radiodataassociate,jdbcType=VARCHAR},
                #{item.combodatamodel,jdbcType=VARCHAR},
                #{item.tag,jdbcType=VARCHAR},
                #{item.secretkey,jdbcType=VARCHAR},#{item.system,jdbcType=VARCHAR},
                #{item.tenant,jdbcType=VARCHAR}, #{item.ts,jdbcType=TIMESTAMP},
                #{item.dr,jdbcType=NUMERIC}
                from dual
            </foreach>
    

    这是我自己的语句,作为参考

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站