通過將SPL代碼組織為子存儲過程和子函數,可以有利地運用SPL存儲過程和函數程序的能力和功能來構建結構良好且易于維護的程序。

通過在SPL程序中聲明子存儲過程和子函數,可從相對較大的SPL程序中的不同位置多次調用相同的SPL代碼。

子存儲過程和子函數具有以下特點:

  • 子存儲過程和子函數的語法、結構和功能幾乎與獨立的存儲過程和函數相同。主要區別在于,是使用關鍵字PROCEDURE或FUNCTION而不是CREATE PROCEDURE或CREATEFUNCTION來聲明子程序。
  • 子存儲過程和子函數提供對其自身內聲明的標識符(即,變量、游標、類型及其他子程序)的隔離。也就是說,這些標識符不能從子存儲過程或子函數以外的上層父級SPL程序或子程序訪問或修改。這會確保子存儲過程和子函數結果可靠且可預測。
  • 子存儲過程和子函數的聲明部分可包含其自己的子存儲過程和子函數。因此,獨立程序中可存在子程序的多層層次機構。在該層次機構內,子程序可訪問上層父級子程序的標識符,還可調用上層父級子程序。但是,不能對層次結構中較低層的子程序進行相同的標識符訪問和調用。

子存儲過程和子函數可從以下任何類型的SPL程序中進行聲明和調用:

  • 獨立的存儲過程和函數。
  • 匿名塊。
  • 觸發器。
  • 包。
  • 對象類型主體的存儲過程和函數。
  • 在上述任意程序內聲明的子存儲過程和子函數。

與子存儲過程和子函數結構和訪問相關的規則將在后面章節中進行更詳細地講述。