通过将SPL代码组织为子存储过程和子函数,可以有利地运用SPL存储过程和函数程序的能力和功能来构建结构良好且易于维护的程序。
通过在SPL程序中声明子存储过程和子函数,可从相对较大的SPL程序中的不同位置多次调用相同的SPL代码。
子存储过程和子函数具有以下特点:
- 子存储过程和子函数的语法、结构和功能几乎与独立的存储过程和函数相同。主要区别在于,是使用关键字PROCEDURE或FUNCTION而不是CREATE PROCEDURE或CREATEFUNCTION来声明子程序。
- 子存储过程和子函数提供对其自身内声明的标识符(即,变量、游标、类型及其他子程序)的隔离。也就是说,这些标识符不能从子存储过程或子函数以外的上层父级SPL程序或子程序访问或修改。这会确保子存储过程和子函数结果可靠且可预测。
- 子存储过程和子函数的声明部分可包含其自己的子存储过程和子函数。因此,独立程序中可存在子程序的多层层次机构。在该层次机构内,子程序可访问上层父级子程序的标识符,还可调用上层父级子程序。但是,不能对层次结构中较低层的子程序进行相同的标识符访问和调用。
子存储过程和子函数可从以下任何类型的SPL程序中进行声明和调用:
- 独立的存储过程和函数。
- 匿名块。
- 触发器。
- 包。
- 对象类型主体的存储过程和函数。
- 在上述任意程序内声明的子存储过程和子函数。
与子存储过程和子函数结构和访问相关的规则将在后面章节中进行更详细地讲述。