参数模式
正如前面所讨论的,一个参数的模式可以是IN、OUT或者IN OUT这三种模式中的其中一种。
下面这些形式参数的特性取决于它的模式。
- 当调用存储过程或函数时如何对形参进行初始化。
- 被调用的存储过程或函数是否可以修改形式参数。
- 实际参数如何从调用程序中将值传递到被调用程序中。
- 当被调用的程序出现一个未处理的异常时如何处理形式参数。
在下面的表中根据参数的模式汇总了各个参数的行为。
Mode Property | IN | IN OUT | OUT |
---|---|---|---|
Formal parameter initialized to: | Actual parameter value | Actual parameter value | Actual parameter value |
Formal parameter modifiable by the called program? | No | Yes | Yes |
Actual parameter contains: (after normal called program termination) | Original actual parameter value prior to the call | Last value of the formal parameter | Last value of the formal parameter |
Actual parameter contains: (after a handled exception in the called program) | Original actual parameter value prior to the call | Last value of the formal parameter | Last value of the formal parameter |
Actual parameter contains: (after an unhandled exception in the called program) | Original actual parameter value prior to the call | Original actual parameter value prior to the call | Original actual parameter value prior to the call |
正如上面的表所示, 一个IN形式参数只有在调用的时候才被初始化为实际参数,除非它被明确使 用缺省值初始化,IN参数可以在被调用的程序中引用,被调用的程序也可以不分配新的值给输入参 数。当被调用的应用运行结束,返回到调用程序时,实际参数包含着和应用被调用前相同的值。
OUT形式参数只有在调用时才被初始化为实际参数。被调用的程序可以引用并且分配一个新的值给 形式参数。如果被调用的程序正常结束, 没有产生异常。那么实际参数的值就是在最后一次分配 给形式参数的值。如果遇到一个被处理的异常,实际参数的值就是最近一次分配给形式参数的值。 如果一个无法被处理的异常产生,实际参数的值仍然是在调用前被分配的值。
和IN参数一样,一个IN OUT形式参数在被调用的时候初始化为实际参数。和一个OUT参数一样,一 个IN OUT形参数可以由被调用的程序修改,并且如果被调用的应用正常结束, 没有异常,先前被 设定形式参数的值会被传递到调用程序的实际参数中。如果遇到一个可处理的异常,实际参数的值 是上一次分配给形式参数的值。如果一个无法处理的异常产生,实际参数的值仍然是在调用前被分 配的值。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论