添加参数列表

当您创建 SPL 例程时,您可定义参数列表,以便当调用例程时,它接受一个或多个参数。参数列表是可选的。

SPL 例程的参数必须有名称,且可使用缺省值来定义。下列是参数可指定的数据类型的种类:
  • 内建的数据类型
  • Opaque 数据类型
  • Distinct 数据类型
  • Row 类型
  • 集合类型
  • 智能大对象(CLOB 和 BLOB)
参数列表不可直接地指定任一下列数据类型:
  • SERIAL
  • SERIAL8
  • BIGSERIAL
  • TEXT
  • BYTE

然而,对于序列数据类型,例程可返回在数值上对等的值,将它们强制转型为对应的整数类型(INT、INT8 或 BIGINT)。类似地,对于支持简单大对象数据类型的例程,参数列表可包括 REFERENCES 关键字来返回指向 TEXT 或 BYTE 对象的存储位置的描述符。

下图展示参数列表的示例。

图: 不同的参数列表的示例。

CREATE PROCEDURE raise_price(per_cent INT);
            
            CREATE FUNCTION  raise_price(per_cent INT DEFAULT 5);
            
            CREATE PROCEDURE update_emp(n employee_t);
            CREATE FUNCTION  update_nums( list1 LIST(ROW (a VARCHAR(10),
            b VARCHAR(10),
            c INT) NOT NULL ));
当您定义参数时,同时完成两个任务:
  • 当执行例程时,您请求用户提供值。
  • 您隐式地定义您可在例程体中用作本地变量的变量(带有与参数名称相同的名称)。

如果您以缺省值定义参数,则用户可使用或不用对应的参数来执行该 SPL 例程。如果用户执行不带参数的 SPL 例程,则数据库服务器指定参数的缺省值作为参数。

当您调用 SPL 例程时,您可对参数给定 NULL 值。在缺省情况下,SPL 例程处理 NULL 值。然而,如果参数为集合元素,则您不可对该参数给定 NULL 值。