小弟是刚学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
解决方案 »
- linux下安装oracle的问题
- Oracle的call statement的用法请教!
- 什么会导致ora-01013 错误呢?
- 关于游标的问题,请解答
- 打开sql*plus时,用户名,密码,主机字符串如何填?
- 请教高手一个SQL语句
- 求救!在oracle中,如何对substr(str,m,n)以后的字段建索引。谢谢!
- 哪里可以免费下载到Oracle9i for win ,在线等待!!
- 是不是连接oracle 8i 必须要装有客户端
- Oracle数据库查询语句来个大佬帮忙解答,万分感谢
- 如何把远程服务器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;
最终结果: