楼主: dingjun123

[精华] 【有奖讨论】PL/SQL编程要点和注意点

[复制链接]
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
61#
发表于 2012-1-10 01:58 | 只看该作者
编程规范我还想到一点——空格,记得在某个版本的pl/sql中,如果你写了如下一行代码
k:=0;
for i in 1...255 loop
    k:=k+i;
end loop;

请问这段代码执行完后,k的值是多少?
结果非常令人惊讶……

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
62#
发表于 2012-1-10 02:22 | 只看该作者
你露点了,我眼神好被我看到了。

使用道具 举报

回复
论坛徽章:
220
状元
日期:2015-08-13 09:42:33榜眼
日期:2015-08-03 13:57:54探花
日期:2015-07-31 13:44:02举人
日期:2015-07-01 15:00:51秀才
日期:2015-07-27 09:45:52进士
日期:2015-07-27 11:26:492015年中国系统架构师大会纪念徽章
日期:2015-07-23 09:58:092014系统架构师大会纪念章
日期:2015-07-23 09:58:092013系统架构师大会纪念章
日期:2015-07-23 09:58:092012系统架构师大会纪念章
日期:2015-07-23 09:58:09
63#
发表于 2012-1-12 12:28 | 只看该作者
好长时间不搞了。都有点忘记了。

使用道具 举报

回复
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292015年新春福章
日期:2015-03-04 14:53:16优秀写手
日期:2014-03-19 06:00:24马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08比亚迪
日期:2013-10-23 21:35:02ITPUB社区12周年站庆徽章
日期:2013-10-08 14:54:39茶鸡蛋
日期:2013-07-25 19:48:40灰彻蛋
日期:2013-05-24 09:42:412013年新春福章
日期:2013-02-25 14:51:24
64#
发表于 2012-1-13 18:16 | 只看该作者

a. 规范是一切,不然开发很随意,后期维护就痛苦了,这里包括变量的命名、必要的注释等
b. 是否绑定变量,视应用定
c. 能用sql就不用pl/sql,能用静态sql就不用动态sql
d. 避免使用undocument的函数/包等,比如 wm_concat

使用道具 举报

回复
论坛徽章:
13
蛋疼蛋
日期:2011-06-01 17:04:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00奥运会纪念徽章:自行车
日期:2012-08-11 11:23:21蛋疼蛋
日期:2012-05-02 22:02:58紫蛋头
日期:2012-01-17 17:01:58鲜花蛋
日期:2012-01-10 09:40:482012新春纪念徽章
日期:2012-01-04 11:57:56ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29ITPUB十周年纪念徽章
日期:2011-09-27 16:34:13授权会员
日期:2011-08-29 11:20:27
65#
发表于 2012-1-17 17:02 | 只看该作者
mark

使用道具 举报

回复
论坛徽章:
0
66#
发表于 2012-1-17 18:48 | 只看该作者
命名规范,注释,异常捕获处理(刚接触PL/SQL)

使用道具 举报

回复
论坛徽章:
21
优秀写手
日期:2014-12-26 06:00:142015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:41:112013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:50:44马上加薪
日期:2014-03-27 16:00:40奥迪
日期:2014-01-23 17:13:08蓝锆石
日期:2015-02-03 13:52:43马上有车
日期:2014-02-28 08:05:15暖羊羊
日期:2015-03-04 14:50:37
67#
发表于 2012-1-31 12:45 | 只看该作者
newkid 发表于 2012-1-3 23:25
2.可以在测试环境修改表,然后看看哪些过程失效了。
自己做工具分析源代码当然可以但是没必要。
以上方 ...

Toad 不就有对象搜索器么?
只要一搜,相关的对象就可以全部搜到了!

使用道具 举报

回复
论坛徽章:
26
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
68#
发表于 2012-1-31 12:55 | 只看该作者
llover 发表于 2011-12-28 23:57
5
Tom Keyt说过:
You should do it in a single SQL statement if at all possible.

使用 LIMIT  会提高效率吗?  fetch c bulk collect into l_c1, l_c2, ....... LIMIT 1000;

有没有人测试过,感觉这样定义l_c1, l_c2 比较麻烦;

如果效率提高明显,麻烦一点还是值得的;

使用道具 举报

回复
论坛徽章:
99
凯迪拉克
日期:2013-10-08 15:55:12凯迪拉克
日期:2013-12-27 09:30:49奔驰
日期:2014-02-15 09:04:10雪佛兰
日期:2014-02-18 15:33:09马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 17:30:42马上加薪
日期:2014-02-18 17:20:352014年新春福章
日期:2014-02-18 18:15:17马上加薪
日期:2014-03-10 09:17:33问答徽章
日期:2014-02-21 08:42:42
69#
发表于 2012-1-31 17:20 | 只看该作者
覺得pl/sql中,規範蠻重要的
    pl/sql寫的不規範,看著就頭疼
相互之間copy代碼,也不怎麼好!搞清楚了,自己寫出來都好點
江湖大忌。。

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
70#
发表于 2012-1-31 23:50 | 只看该作者
qingyun 发表于 2012-1-31 12:55
使用 LIMIT  会提高效率吗?  fetch c bulk collect into l_c1, l_c2, ....... LIMIT 1000;

有没有人 ...

可以定义一个基于记录(%ROWTYPE)的COLLECTION, 这样就直接INTO, 而不是每个列。
使用LIMIT是为了不把PGA撑爆,至于这个尺寸设置多少最合适,必须具体试验。

使用道具 举报

回复

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

本版积分规则 发表回复

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