参数模式
如前所述,参数具有三种可能的模式之一:IN、OUT 或 IN OUT。形参的以下特点取决于其模式:
- 调用存储过程或函数时的初始值。
- 被调用存储过程或函数是否可修改形参。
- 实参值如何从调用程序传递到被调用程序。
- 当被调用程序中发生未处理的异常时,形参值会发生什么。
下表根据其模式总结了参数的行为。
模式属性 | IN | IN OUT | OUT |
---|---|---|---|
形参初始化为: | 实参值 | 实参值 | 实参值 |
形参是否可由被调用程序修改? | 否 | 是 | 是 |
实参包含:(在正常被调用程序终止后) | 调用之前的原始实参值 | 形参的最后一个值 | 形参的最后一个值 |
实参包含:(在被调用程序中发生已处理的异常后) | 调用之前的原始实参值 | 形参的最后一个值 | 形参的最后一个值 |
实参包含:(在被调用程序中发生未处理的异常后) | 调用之前的原始实参值 | 调用之前的原始实参值 | 调用之前的原始实参值 |
如该表所示,IN 形参初始化为调用它的实参,除非它显式初始化为默认值。IN 参数可在被调用程序中引用,但被调用程序不能将新值分配给 IN 参数。在控制权返回调用程序后,实参始终包含调用之前设置的同一值。
OUT 形参初始化为调用它的实参。被调用程序可引用形参并向其分配新值。如果被调用程序终止且没有发生异常,则实参采用形参中最后设置的值。如果发生已处理的异常,则实参采用分配给形参的最后一个值。如果发生未处理的异常,则实参的值仍是它在调用之前的值。
与 IN 参数一样,IN OUT 形参也初始化为调用它的实参。与 OUT 参数一样,IN OUT 形参也可由被调用程序修改,如果被调用程序终止且未发生异常,则形参中的最后一个值将传递给调用程序的实参。如果发生已处理的异常,则实参采用分配给形参的最后一个值。如果发生未处理的异常,则实参的值仍是它在调用之前的值。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论