小弟是刚学sql,碰到个问题。需要写个存储过程,那位大牛腾出2分钟帮忙费费心,小弟在这里谢谢了。
有3个表 ,a b c
a里面就2列, gid l1 l2
b里面3猎 gid l3 l4
c里面2猎 gid l5执行这个:
如果a.l2 =1
将b的l3值 改为c的l5
否则
将b的l4 改为c的l5
有3个表 ,a b c
a里面就2列, gid l1 l2
b里面3猎 gid l3 l4
c里面2猎 gid l5执行这个:
如果a.l2 =1
将b的l3值 改为c的l5
否则
将b的l4 改为c的l5
解决方案 »
- 求sql语句
- 高分求metalink.oracle.com的授权id
- 在oracle database 中创建一个table 数据类型问题
- 存储过程调用其他用户的表的问题
- Oracle9i安装问题,高分求助,非常急!
- 请教关于select语句,请大家帮帮忙!
- 如何让在linux上安装好的oracle9i作为系统启动?
- 如何实现sql批处理,例如对一个表进行插入操作,把许多语句写在一个文本文件里实现批量执行
- 请指教一个修改记录的问题!!!急!!!
- 表中一行数据被锁定了不能修该请问解锁的方法
- 如何把远程服务器Oracle数据库导入到本机Oracle数据库中?
- 如何利用oms进行数据的导入导出工作!
(
GID NUMBER(2),
F1 NUMBER(4),
F2 NUMBER(4)
);
INSERT INTO T155 VALUES(1, 10, 0);
INSERT INTO T155 VALUES(2, 15, 1);
INSERT INTO T155 VALUES(3, 20, 0);CREATE TABLE T156
(
GID NUMBER(2),
F3 NUMBER(4),
F4 NUMBER(4)
);
INSERT INTO T156 VALUES(1, 100, 101);
INSERT INTO T156 VALUES(2, 200, 201);
INSERT INTO T156 VALUES(3, 300, 301);CREATE TABLE T157
(
GID NUMBER(2),
F5 NUMBER(4)
);
INSERT INTO T157 VALUES(1, 1000);
INSERT INTO T157 VALUES(2, 2000);
INSERT INTO T157 VALUES(3, 3000);COMMIT;
存储过程:CREATE OR REPLACE PROCEDURE ProcUpdateT156
IS
CURSOR curT155 IS SELECT GID, F1, F2 FROM T155;
vF5 T157.F5%TYPE;
BEGIN
FOR r IN curT155 LOOP
SELECT F5 INTO vF5 FROM T157 WHERE GID = r.GID;
IF r.F2 = 1 THEN
UPDATE T156 SET F3 = vF5 WHERE GID = r.GID;
ELSE
UPDATE T156 SET F4 = vF5 WHERE GID = r.GID;
END IF;
END LOOP;
COMMIT;
END ProcUpdateT156;
执行存储过程:begin
-- Call the procedure
procupdatet156;
end;
最终结果: