文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发Oracle解析Oracle/Oracle Forms 的多用途代码
精品推荐
特别推荐
·ORACLE应用中常见的傻瓜问题1000问 (二)
·自动清除statspack所产生的snapshot旧记录
·MPlayer常见问题解答
·常用数据库比较
·ODBC API常用函数诠释
·提高ORACLE数据库的查询统计速度
·细化解析:Oracle使用的hints调整机制
·解析Oracle/Oracle Forms 的多用途代码
·从Oracle的FORM中调用REPORT的实用技巧
·Oracle SQL精妙SQL语句讲解
热点TOP10
·ORACLE常用傻瓜问题1000问
·自动清除statspack所产生的snapshot旧记录
·Oracle DBMS_REPAIR包修复损坏数据块
·DBMS_REPAIR包修复损坏数据块
·我的oracle笔记四(DBA管理)
·ORACLE应用中常见的傻瓜问题1000问 (二)
·ORA-01555 快照过旧
·VMware下RedHat安装Oracle 9i RAC全攻略
·Oracle SQL精妙SQL语句讲解
·Oracle客户端文件打包

解析Oracle/Oracle Forms 的多用途代码

日期:2007年8月31日 作者: 查看:[大字体 中字体 小字体]


end; / Procedure created. SQL> exec am
('Where am I?'); Where am I? PL/SQL
procedure successfully completed.

增加健壮性

假如你的消息很长,或者需要填满被spool的输出中的一页?让我们暂时忽略自动换行(word wrapping),分切文本的一个简单的方法是合适的截取子串。这种情况迫切需要递归(recursion),当然,理解递归的最好方法是首先理解递归(对不起,老笑话了)。分切过程将执行长度检查,假如剩下的字符串比你设置的要切除的值长,那么调用截取子串过程,必要的时候进行重复上面的过程。

假如截取发生在一个单词的中间怎么办?好,记住,这是PL/SQL,而不是字处理程序。在Forms环境中,当文本输入到了一个文本字段,一般你都可以获得自动的格式化。你的确可以通过SQL*Plus使用一些格式化功能,但是请确信选择了符合你需要的正确的类型。使用八个由A到J组成的字符串(在J之后有一个空格),设置linesize为low(容易看出自动换行选项的区别),下面的例子展示了结果。

set serveroutput on format word_wrapped exec
am(insert the 8 strings here); abcdefghij
abcdefghij abcdefghij abcdefghij abcdefghij
abcdefghij abcdefghij abcdefghij set
serveroutput on format wrapped exec am
(insert the 8 strings here); abcdefghij
abcdefghij abcdefgh ij abcdefghij
abcdefghij abcde fghij abcdefghij abcdefghij

上面例子教育我们要利用现有的内置的功能。不必重新发明轮子?假如“FORMAT WORD_WRAPPED”没有,那么你怎么解决?第二个例子就显示了递归方法造成的直接的截取结果。

将你的库打成包(Package)

O'Reilly出版社的《Oracle PL/SQL Developer's Workbook》 (Steven Feuerstein编写,2000年出版)中有一个关于如何创建基础库的很好的例子,并且这个例子利用了重载(overload)。你可能从以前的一篇文章中回忆起来,重载允许你在一个包(package)中使用相同的名字命名函数或者过程,并且Oracle通过比较参数的个数和类型能够知道你引用了哪个版本的函数或者过程。


一个明智的命名方法,尤其当你和Java程序员共事的话,会将包命名为“prt”,将过程命名为“ln”。这样最后的结果是“prt.ln('your message');”。Java中打印一行的方法是使用System.out.println(),这样你可以看出从目的和功能上为什么“prn.ln”这个名字很直观。在那本书中的例子处理文本、数字、日期和布尔类型的输入。

CREATE or REPLACE package prt is
Procedure ln (msg in varchar2);
Procedure ln (msg in number);
Procedure ln (msg in date);
Procedure ln (msg in boolean); END prt; /

上面的过程可以被扩展以包含其他的例子或者前面提到的情况。你可以让输出文字采用内置的格式。只要加入“Procedure dup(msg in number” 到包中,那么像“prt.dup(46);” 这样的调用会产生 “Duplicates counted: 46.”的输出消息。

结束语

假如有一天Oracle公司改变或者不支持内置的DBMS_OUTPUT过程,怎么办?在你的代码中有多少地方使用了这个过程?将这个功能打包到你自己的库的美妙之处在于你只需要更新一处代码——在包中的那些代码。Forms程序员社区已经花费了数千小时更新数千个,如果不是数百万的话,forms的二进制文件,因为警告消息功能或者规范发生了变化。对于DBA和程序员来说,这是宝贵的一课,教会他们如何利用Oracle提供的东西来让事情满足自己需求。

(出处:清风学院


上一页 [1] [2] 




上一篇:菜鸟学上网 教你如何排除网络故障

下一篇:Java精华积累:初学者都应该搞懂的问题
相关文章:
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·QQ空间免费换皮肤代码
·电脑使用一段时间后会变慢原因解析
·[宠物]问道宝宝,肉盾,法宠,攻宠全面解析
·如何在QQ空间加入播放器代码
·免费领养QQ空间五级花最新技巧及代码放送
·零起步搞定DNS(网络域名)的解析故
·最新MTV音乐空间代码
·QQ空间音乐代码
·QQ空间植物代码
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot