楼主: dingjun123

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

[复制链接]
论坛徽章:
2
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:50:44
31#
发表于 2011-12-29 13:11 | 只看该作者
比如,
包 就像 面向对象的类

  DECLARE
    req   utl_http.req;
    resp  utl_http.resp;
    value VARCHAR2(1024);
  BEGIN

    utl_http.set_proxy('proxy.it.my-company.com', 'my-company.com');           ---设置代理

    req := utl_http.begin_request('http://www-hr.corp.my-company.com');    -- 请求网页
    utl_http.set_header(req, 'User-Agent', 'Mozilla/4.0');                                --设置头信息
    resp := utl_http.get_response(req);                                                          --获取http响应对象
    LOOP
      utl_http.read_line(resp, value, TRUE);                                                      --读取内容
      dbms_output.put_line(value);                                                                   --自己处理逻辑   
    END LOOP;
    utl_http.end_response(resp);                                                                   --结束,释放http响应对象
  EXCEPTION                                                                                                   -- 异常处理
    WHEN utl_http.end_of_body THEN
      utl_http.end_response(resp);
  END;

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:54:46
32#
发表于 2011-12-29 14:01 | 只看该作者
在PL/sql处理大批量数据的时候,collection和dbms_lock的配合使用,可以充分利用服务器的内存和CPU资源,从而可以提高数据处理的效率。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
33#
 楼主| 发表于 2011-12-29 18:30 | 只看该作者
大家别讨论一句话啊,选一个点或几个点说说经验,弄点实例

使用道具 举报

回复
论坛徽章:
39
嫦娥
日期:2015-08-26 10:44:22托尼托尼·乔巴
日期:2019-12-17 00:46:1120周年集字徽章-20	
日期:2020-10-28 14:59:27
34#
发表于 2011-12-29 20:40 | 只看该作者
我做维护多,PL/SQL不熟,
个人觉得PL/SQL入门容易,写好难,
比如cursor,貌似一看就会,但是维护中经常看到cursor引发的问题。

使用道具 举报

回复
论坛徽章:
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
35#
发表于 2011-12-29 22:47 | 只看该作者
nannan5000 发表于 2011-12-29 11:00
1.    PL/SQL中的命名规范和编程规范:包,过程,函数,触发器,类型,变量等


你的WHEN OTHERS做法是错的,后面一定要RAISE, 另外DBMS_UTILITY.FORMAT_ERROR_BACKTRACE要记入日志。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
36#
 楼主| 发表于 2011-12-29 23:05 | 只看该作者
newkid 发表于 2011-12-29 22:47
你的WHEN OTHERS做法是错的,后面一定要RAISE, 另外DBMS_UTILITY.FORMAT_ERROR_BACKTRACE要记入日志。

使用道具 举报

回复
招聘 : 多个岗位招聘
论坛徽章:
33
2010广州亚运会纪念徽章:跆拳道
日期:2010-11-22 15:42:39灰彻蛋
日期:2012-05-16 13:17:56参与WIN7挑战赛纪念
日期:2012-05-24 10:37:35茶鸡蛋
日期:2012-05-28 17:27:32灰彻蛋
日期:2012-06-13 18:48:14双黄蛋
日期:2012-06-14 14:32:02奥运会纪念徽章:帆船
日期:2012-07-10 09:43:29奥运会纪念徽章:足球
日期:2012-08-17 09:17:32奥运会纪念徽章:帆船
日期:2012-07-26 15:46:49奥运会纪念徽章:赛艇
日期:2012-08-20 16:23:58
37#
发表于 2011-12-30 07:56 | 只看该作者
newkid 发表于 2011-12-29 22:47
你的WHEN OTHERS做法是错的,后面一定要RAISE, 另外DBMS_UTILITY.FORMAT_ERROR_BACKTRACE要记入日志。

我只是示范下我们的特殊的地方
常规的raise 啥的都必须有啊~

使用道具 举报

回复
论坛徽章:
3
鲜花蛋
日期:2011-07-05 17:12:112012新春纪念徽章
日期:2012-01-04 11:54:46优秀写手
日期:2013-12-18 09:29:13
38#
发表于 2011-12-30 16:43 | 只看该作者
PL/SQL中的异常处理规范:异常分类:编译期、运行期、可预测的、不可预测的,异常如何捕获与如何处理,在什么场合和位置处理异常。相关包比如DBMS_UTILITY.FORMAT_ERROR_STACK、DBMS_UTILITY.FORMAT_CALL_STACK、DBMS_UTILITY.FORMAT_ERROR_BACKTRACE以及10g的DML ERROR LOG,批处理异常特点和应用。比如when others部分到底该如何处理,when others null;完事了?是否该考虑定制一个高度封装的异常处理包来处理异常

一般做法,封装写日志,ROLLBACK,然后RAISE

使用道具 举报

回复
论坛徽章:
3
鲜花蛋
日期:2011-07-05 17:12:112012新春纪念徽章
日期:2012-01-04 11:54:46优秀写手
日期:2013-12-18 09:29:13
39#
发表于 2011-12-30 16:48 | 只看该作者
PL/SQL中的静态sql和动态sql规范以及何时使用绑定变量,何时避免使用绑定变量,

如何规范化地写动态sql?

动态的时候最好在运行的时候带参数
execute immediate 'select XX from table_name where id=:id' into 参数 using 绑定带入参数

使用道具 举报

回复
论坛徽章:
4
2012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24ITPUB社区OCM联盟徽章
日期:2013-03-21 15:37:32
40#
发表于 2011-12-30 23:58 | 只看该作者
对于第一点,命名规范以及代码的格式,注释什么的上周在给新员工培训的时候强调过,切身的体会是有些人经常图简便,将变量名和字段名搞混,过程编译能通过,但是执行却是不能通过,而且问题很隐晦,难于排查,因此我认为变量一定要加统一的前缀,而且代码的格式一定要工整。这样好查问题;
紧跟着说异常那一块,也是要一定写清楚的,必要时要记录日志,这样好跟踪问题;
关于绑定变量,在oltp系统中要重视绑定变量,在olap中不一定能起到好的效果,也许带来不好的结果。这里有一个采用绑定变量的例子,见附件;
最好就是要对oracle的系统函数,分析函数要非常的熟悉,善于使用,很多时候能起到事半功倍的效果。

Bind_variables_in_plsql.sql

1.11 KB, 下载次数: 11

售价: 100 pub币  [记录]

使用道具 举报

回复

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

本版积分规则 发表回复

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