参数方式 (PL/SQL)

PL/SQL 过程参数可以处于下列三种可能方式的一种:IN、OUT 或 IN OUT。 PL/SQL 函数参数只能处于 IN 方式。

  • 除非显式使用缺省值来初始化 IN 形参,否则该形参将初始化为用于调用该形参的实参。 可以在被调用程序中引用 IN 参数;但是,被调用程序不能将新值指定给 IN 参数。 在控制权返回到调用程序之后,实参始终包含调用前对其设置的值。
  • OUT 形参将初始化为用于调用该形参的实参。 被调用程序可以引用此形参以及将新值指定给此形参。 如果被调用程序在未发生异常的情况下终止,那么实参将接收到上次对此形参设置的值。 如果发生已处理的异常,那么实参将接收到对此形参设置的上一个值。 如果发生未处理的异常,那么实参将保持执行调用前对其设置的值。
  • 与 IN 参数相似,IN OUT 形参将初始化为用于调用该形参的实参。 与 OUT 参数相似,被调用程序可以对 IN OUT 形参进行修改,如果被调用程序在未发生异常的情况下终止,那么形参的上一个值将被传递到调用程序的实参。 如果发生已处理的异常,那么实参将接收到对此形参设置的上一个值。 如果发生未处理的异常,那么实参将保持执行调用前对其设置的值。
表1 总结了这种行为。
表 1. 参数方式
方式属性 IN IN OUT OUT
形参初始化为: 实参值 实参值 实参值
被调用程序可以对形参进行修改吗? False
在被调用程序正常终止之后,实参包含: 执行调用前的原始实参值 形参的上一个值 形参的上一个值
在被调用程序中发生已处理的异常之后,实参包含: 执行调用前的原始实参值 形参的上一个值 形参的上一个值
在被调用程序中发生未处理的异常之后,实参包含: 执行调用前的原始实参值 执行调用前的原始实参值 执行调用前的原始实参值