SELECT FD, SDD, FOD, WV, TH into v_fd,v_sdd,v_fod,v_wv,v_th from DAILY_TB3  where .....INSERT INTO DAILY_TB2(FD, SDD, FOD, WV, TH) values(v_fd,v_sdd,v_fod,v_wv,v_th)思路是这样,自已看办吧

解决方案 »

  1.   

    语法根本就不对,在select函数中怎么能引用insert的表呢?
    改成如下可以工作,但是为什么daily_tb2中有的纪录还要再插入一遍?搞不懂你的逻辑
    INSERT INTO daily_tb2
                (fd, sdd, fod, wv, th)
       SELECT fd, sdd, fod, wv, th
         FROM daily_tb3 x, daily_tb2 y
        WHERE y.sta_id = x.sta_id
          AND y.YEAR = x.YEAR
          AND y.MONTH = x.MONTH
          AND y.DAY = x.DAY
      

  2.   

    三千说的有道理,如果insert into ?? select ?? from ??
    那么首先要保证select ?? from ??这一句可以单独运行通过。
      

  3.   

    各位大虾:
    有个表daily_tb2,需要增加几个字段。
    所以我用sqlldr把数据导入了daily_tb3(专门为此兴建的)
    然后,在daily_tb2增加5个字段fd, sdd, fod, wv, th
    然后就像用以上语句合并两个表。
    但是这样写好象不行:(理论上好像没问题)
    INSERT INTO DAILY_TB2(FD, SDD, FOD, WV, TH) SELECT DAILY_TB3.FD, DAILY_TB3.SDD, DAILY_TB3.FOD, DAILY_TB3.WV, DAILY_TB3.TH FROM DAILY_TB3     WHERE 
        DAILY_TB2.STA_ID=DAILY_TB3.STA_ID AND
        DAILY_TB2.YEAR=DAILY_TB3.YEAR AND
        DAILY_TB2.MONTH=DAILY_TB3.MONTH AND
        DAILY_TB2.DAY=DAILY_TB3.DAY执行了一阵,
    出现结果为:
    The following error has occurred:
    ORA-01400: 无法将NULL 插入 ("DEV"."DAILY_TB2"."STA_ID")怎么办?我确定daily_tb3不会有sta_id为null的情况。去年这时候信誓旦旦要学数据库,现在终于一门心思学VC,但是数据库还是要用道呀,天天上VC论坛,但1年没来数据库论坛了,恍如昨事,让人感慨~~~我会继续努力的:)
      

  4.   

    你搞错了,不是insert,而是update。insert是插入新的纪录,而你的问题是要对已有记录的新增字段赋值。
    update daily_tb2 x
       set (FD, SDD, FOD, WV, TH) =
           (select FD, SDD, FOD, WV, TH from daily_tb3 y
             where sta_id = x.sta_id
               and year   = x.year
               and month  = x.month
               and day    = x.day);而且我敢确定,你的sql语句根本就无法运行,也不知道你的错误信息哪里来的
      

  5.   

    Quote:
    The following error has occurred:
    ORA-01400: 无法将NULL 插入 ("DEV"."DAILY_TB2"."STA_ID")怎么办?我确定daily_tb3不会有sta_id为null的情况。
    Quote:
    弱水大哥已经解释的很明白了,为了让你减少疑惑,特做补充:
    上面这句,由于sta_id为主键,不能为空,insert时只插入
    FD, SDD, FOD, WV, TH几个字段,并没有插入sta_id这个主键,
    肯定会得到这个错误。不过确实如弱水大哥所说,这个语句不会
    执行,而且更不会“执行了一阵”才出现这个错误,所以我也是
    爱莫能助啊。