update a set a.字段1=(select top 1 b.字段3 from b where a.字段2=b。字段4)
请问正确的写法到底是什么??小弟有一句 s ql2000要迁移到orcale, 温一下则么写?? UPDATE T_CWSJ_YGXZHZ SET JXXZ=JXXZ+b.TotalSum FROM T_CWSJ_YGXZHZ a,(SELECT RYID,SUM(YFS) AS TotalSum ,ryfl FROM T_CWSJ_YGXZXX WHERE XZZL='QC02' AND ND=@ND AND YF=@YF GROUP BY RYID,ryfl) b WHERE a.RYID=b.RYID AND a.ND=@ND AND a.YF=@YF and a.ryfl=b.ryfl and a.ryfl=@ryfl@打头的都是过程中的变量
移植几个注意的问题: 1. 用动态SQL, 可以使用绑定变量,这样能提高效率. 例如: declare v_sql varchar2(1000); begin v_sql := ’UPDATE tabelname SET colname = colvalue WHERE col1 = :1 and col2 =:2’; EXECUTE IMMEDIATE v_sql USING col1,col2 ; end; 2. 注意判断NULL值,思路我在前面已经说了 3. 不用总是指望别人给你写出完整的SQL, 自己调试通过了不是很好吗?
UPDATE T_CWSJ_YGXZHZ
SET JXXZ=JXXZ+b.TotalSum
FROM T_CWSJ_YGXZHZ a,(SELECT RYID,SUM(YFS) AS TotalSum ,ryfl FROM T_CWSJ_YGXZXX WHERE XZZL='QC02' AND ND=@ND AND YF=@YF GROUP BY RYID,ryfl) b
WHERE a.RYID=b.RYID AND a.ND=@ND AND a.YF=@YF and a.ryfl=b.ryfl and a.ryfl=@ryfl@打头的都是过程中的变量
1. 用动态SQL, 可以使用绑定变量,这样能提高效率.
例如: declare
v_sql varchar2(1000);
begin
v_sql := ’UPDATE tabelname SET colname = colvalue
WHERE col1 = :1 and col2 =:2’;
EXECUTE IMMEDIATE v_sql USING col1,col2 ;
end; 2. 注意判断NULL值,思路我在前面已经说了 3. 不用总是指望别人给你写出完整的SQL, 自己调试通过了不是很好吗?