12
返回列表 发新帖
楼主: isumsen

[PL/SQL] 咨询一个再有select的update的sql

[复制链接]
论坛徽章:
6
奥运会纪念徽章:网球
日期:2012-10-26 05:30:30奥运会纪念徽章:蹦床
日期:2012-11-05 16:05:03奥运会纪念徽章:网球
日期:2012-11-21 16:55:44奥运会纪念徽章:铁人三项
日期:2012-11-21 16:56:32奥运会纪念徽章:射箭
日期:2012-12-03 14:26:02奥运会纪念徽章:手球
日期:2012-12-03 14:26:02
11#
发表于 2012-12-29 17:24 | 只看该作者
字符类型的吗?

使用道具 举报

回复
论坛徽章:
6
奥运会纪念徽章:网球
日期:2012-10-26 05:30:30奥运会纪念徽章:蹦床
日期:2012-11-05 16:05:03奥运会纪念徽章:网球
日期:2012-11-21 16:55:44奥运会纪念徽章:铁人三项
日期:2012-11-21 16:56:32奥运会纪念徽章:射箭
日期:2012-12-03 14:26:02奥运会纪念徽章:手球
日期:2012-12-03 14:26:02
12#
发表于 2012-12-29 17:27 | 只看该作者
declare
l_jobcode bd_jobbasfil.jobcode%type;
l_jobname bd_jobbasfil.jobname%type;
begin
for cur in (select * from bd_jobbasfil where jobname='综合')
loop
l_jobcode:=substr(to_char(cur.jobcode),1,6);
select jobname into l_jobname from bd_jobbasfil
where jobcode=l_jobcode;
update bd_jobbasfil set jobname=l_jobname||jobname
where jobcode=cur.jobcode;
end loop;
end;

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
13#
 楼主| 发表于 2012-12-29 22:57 | 只看该作者
yongzhuhe99 发表于 2012-12-29 17:27
declare
l_jobcode bd_jobbasfil.jobcode%type;
l_jobname bd_jobbasfil.jobname%type;

真的可以啊,我比较奇怪的是你写的这个块怎么在PL/SQL Developer的sql窗口就直接执行update了啊,块不是需要在test窗口或者cmd下面执行吗?
标准的sql不能用循环的

使用道具 举报

回复
论坛徽章:
10
蛋疼蛋
日期:2013-01-09 17:30:51喜羊羊
日期:2015-05-09 16:41:552015年新春福章
日期:2015-03-06 11:58:39暖羊羊
日期:2015-03-04 14:53:00马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08夏利
日期:2014-02-15 15:19:052013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:网球
日期:2013-01-30 16:45:43弗兰奇
日期:2017-06-25 21:17:45
14#
发表于 2012-12-29 23:27 | 只看该作者
update bd_jobbasfil b1
      set b1.jobname = (select b2.jobname||'综合'
                          from bd_jobbasfil b2
                         where b2.jobcode = substr(b1.jobcode, 1, 6))
    where b1.jobname = '综合'

这个试试

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
15#
 楼主| 发表于 2012-12-30 09:20 | 只看该作者
本帖最后由 isumsen 于 2012-12-30 09:23 编辑
ssqtjf 发表于 2012-12-29 23:27
update bd_jobbasfil b1
      set b1.jobname = (select b2.jobname||'综合'
                          ...

测试可以,这个最好,另外,麻烦你看下12楼的块,为什么可以直接在PL/SQL Developer的sql窗口执行,并且也解决了我这个问题


使用道具 举报

回复
论坛徽章:
6
奥运会纪念徽章:网球
日期:2012-10-26 05:30:30奥运会纪念徽章:蹦床
日期:2012-11-05 16:05:03奥运会纪念徽章:网球
日期:2012-11-21 16:55:44奥运会纪念徽章:铁人三项
日期:2012-11-21 16:56:32奥运会纪念徽章:射箭
日期:2012-12-03 14:26:02奥运会纪念徽章:手球
日期:2012-12-03 14:26:02
16#
发表于 2012-12-30 13:25 | 只看该作者
ssqtjf 发表于 2012-12-29 23:27
update bd_jobbasfil b1
      set b1.jobname = (select b2.jobname||'综合'
                          ...

还是你的语句简练!!

使用道具 举报

回复
论坛徽章:
6
奥运会纪念徽章:网球
日期:2012-10-26 05:30:30奥运会纪念徽章:蹦床
日期:2012-11-05 16:05:03奥运会纪念徽章:网球
日期:2012-11-21 16:55:44奥运会纪念徽章:铁人三项
日期:2012-11-21 16:56:32奥运会纪念徽章:射箭
日期:2012-12-03 14:26:02奥运会纪念徽章:手球
日期:2012-12-03 14:26:02
17#
发表于 2012-12-30 13:26 | 只看该作者
isumsen 发表于 2012-12-29 22:57
真的可以啊,我比较奇怪的是你写的这个块怎么在PL/SQL Developer的sql窗口就直接执行update了啊,块不是需 ...

对于pl/sql我不清楚
我平时都是使用sql*plus

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表