参数有IN、OUT 或 IN OUT三种模式。形参的以下特点取决于其模式:

  • 调用存储过程或函数时的初始值。
  • 被调用存储过程或函数是否可修改形参。
  • 实参值如何从调用程序传递到被调用程序。
  • 当被调用程序中发生未处理的异常时,形参值会发生什么。

以下内容根据其模式总结了参数的行为。

  • IN 形参初始化为调用它的实参,除非它显式初始化为默认值。IN 参数可在被调用程序中引用,但被调用程序不能将新值分配给 IN 参数。在控制权返回调用程序后,实参始终包含调用之前设置的同一值。
  • OUT 形参初始化为调用它的实参。被调用程序可引用形参并向其分配新值。如果被调用程序终止且没有发生异常,则实参采用形参中最后设置的值。如果发生已处理的异常,则实参采用分配给形参的最后一个值。如果发生未处理的异常,则实参的值仍是它在调用之前的值。
  • 与 IN 参数一样,IN OUT 形参也初始化为调用它的实参。与 OUT 参数一样,IN OUT 形参也可由被调用程序修改,如果被调用程序终止且未发生异常,则形参中的最后一个值将传递给调用程序的实参。如果发生已处理的异常,则实参采用分配给形参的最后一个值。如果发生未处理的异常,则实参的值仍是它在调用之前的值。