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)思路是这样,自已看办吧
语法根本就不对,在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
三千说的有道理,如果insert into ?? select ?? from ?? 那么首先要保证select ?? from ??这一句可以单独运行通过。
各位大虾: 有个表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年没来数据库论坛了,恍如昨事,让人感慨~~~我会继续努力的:)
你搞错了,不是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语句根本就无法运行,也不知道你的错误信息哪里来的
改成如下可以工作,但是为什么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
那么首先要保证select ?? from ??这一句可以单独运行通过。
有个表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年没来数据库论坛了,恍如昨事,让人感慨~~~我会继续努力的:)
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语句根本就无法运行,也不知道你的错误信息哪里来的