首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Oracle
开发
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
游标问题,有问题,没解决
[已结贴,结贴人:benjiang]
加为好友
发送私信
在线聊天
benjiang
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
揭贴率:
90.48%
发表于:
2008-06-30 17:26:10
楼主
各位,想问一下这个存储过程如何写.
表1 test2
a b
表2 test3
c d
test2.a=test3.c
想将A和C关联的数据B更新到C
SELECT ::
update test3 set d=
(select b from test2
where a='a2')
where c='a2'
我写的存储过程:
create PROCEDURE dd(P_ID IN NUMBER)
IS
CURSOR REMARK IS
SELECT a
FROM test2
WHERE a = P_ID;
begin
FOR j in remark loop
update test3 set d=
(select b from test2
where a=j.p_id)
where c=j.p_id
end loop;
end;
帮忙看下那里有问题..
问题点数:
100
回复次数:
11
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
doer_ljy
可战
等级:
可用分等级:
掌柜
总技术分:
11580
总技术分排名:
1597
发表于:
2008-06-30 17:37:50
1
楼 得分:
50
create PROCEDURE dd(P_ID IN NUMBER)
IS
CURSOR REMARK IS
SELECT a,b
FROM test2
WHERE a = P_ID;
begin
FOR j in remark loop
update test3 set d= j.b
where c = j.a;
end loop;
end;
试试。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
benjiang
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-30 17:42:17
2
楼 得分:
0
PROCEDURE HAPPY.DD 编译错误
错误:PLS-00103: ???? "END"?????????
.(*@%&-+;/atmodremreturnreturning
<an exponent (**)>andor||
?? ";" ???? "END" ????
行:18
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
benjiang
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-30 17:48:38
3
楼 得分:
0
create or replace procedure t(P_ID IN NUMBER) is
CURSOR REMARK IS
SELECT a
FROM test2
WHERE a = P_ID;
begin
FOR j in remark loop
update test3 set d=
(select b from test2
where a=j.a)
where c=j.a ;
end loop;
end t;
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
doer_ljy
可战
等级:
可用分等级:
掌柜
总技术分:
11580
总技术分排名:
1597
发表于:
2008-06-30 18:03:58
4
楼 得分:
10
引用 2 楼 benjiang 的回复:
PROCEDURE HAPPY.DD 编译错误
错误:PLS-00103: ???? "END"?????????
.(*@%&-+;/atmodremreturnreturning
<an exponent (**)>andor ¦ ¦
?? ";" ???? "END" ????
行:18
不会编译出错吧?刚刚试了一下。
你这种情况没有必要使用update中的子查询的。
好好想想,应该很容易实现。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
benjiang
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-30 19:02:14
5
楼 得分:
0
我看了你写的SQL,做过测试,不用子查询的话是整列更新的.所以我才想到用子查询.
另外,我这个存储过程编译能通过,但如何CALL T呢?
请指教.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
edwinwed
披头
等级:
可用分等级:
长工
总技术分:
103
总技术分排名:
87612
发表于:
2008-06-30 19:26:51
6
楼 得分:
40
begin
t(1);
end;
select * from test3;
存储过程的调用本身就是PLSQL语句,不是表达式的一部分来调用的的(函数是)
最终要看存储过程运行的结果 就要看你的那个存储过程是干什么的,
这里你更新TEST3,就查查TEST3看变化吧!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
fxianxian
風一樣的男子
等级:
可用分等级:
富农
总技术分:
2124
总技术分排名:
10017
发表于:
2008-07-01 08:17:31
7
楼 得分:
0
呵呵
不錯啊!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
benjiang
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-07-01 09:07:01
8
楼 得分:
0
问题全面解决,结贴送分.多谢大家.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
benjiang
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-07-01 14:11:47
9
楼 得分:
0
package
里面的存储过程如何调用呢?
begin
cc.t(1);
end;
不能调用测试.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
edwinwed
披头
等级:
可用分等级:
长工
总技术分:
103
总技术分排名:
87612
发表于:
2008-07-04 09:39:49
10
楼 得分:
0
引用 9 楼 benjiang 的回复:
package
里面的存储过程如何调用呢?
begin
cc.t(1);
end;
不能调用测试.
上面错了
是
begin
t(1);
end;
存储过程不属于哪个表!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
edwinwed
披头
等级:
可用分等级:
长工
总技术分:
103
总技术分排名:
87612
发表于:
2008-07-04 09:42:10
11
楼 得分:
0
可能我误会你的意思
要是想调用游标,参量就把它写在一个包里(PACKAGE)
包是全局的,存储过程和函数是局部的
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友