WEB开发网
开发学院数据库Oracle 分析Oracle/Oracle Forms中多用途代码 阅读

分析Oracle/Oracle Forms中多用途代码

 2007-05-09 12:14:34 来源:WEB开发网   
核心提示: 编译之后,下面是使用的例子,分析Oracle/Oracle Forms中多用途代码(3),SQL> set serveroutput onSQL> exec am('Here I am',46);Here I am46PL/SQL procedure succe

编译之后,下面是使用的例子。

SQL> set serveroutput on
SQL> exec am('Here I am',46);
Here I am46
PL/SQL procedure successfully completed.

好了,这次输出本可以看起来更好一些(注意输出中msg1和msg2中没有空格)。我们到这里就必须格式化一个或者全部两个消息输入让输出好看一些。然而,假如美观不需要关心,那么创建基于像 ('dupes ',46)这样的输入的消息,这样做也是非常简单的,虽然你需要处理空格或者格式化。那么这种方法是否有缺陷呢?这就看情况了。假如你需要的仅仅是msg1,而不需要msg2,怎么办?当创建这个过程,需要允许msg2是null值。显然,msg1不需要这样,对吧?

CREATE OR REPLACE procedure am
(msg1 varchar2, msg2 varchar2 default null) as
begin
dbms_output.put_line(msg1||msg2);
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(容易看出自动换行选项的区别),下面的例子展示了结果。

上一页  1 2 3 4  下一页

Tags:分析 Oracle Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接