分析Oracle/Oracle Forms中多用途代码
2007-05-09 12:14:34 来源:WEB开发网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提供的东西来让事情满足自己需求。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接