|
|
|
假定我们想要这样一个函数:给定一个书名,返回其作者数,使用4NF模式(参见上图)。我们可以用下面这种方式定义这个函数:
|
|
|
|
这个过程可以用在一个返回具有多于一个作者的所有书的名称的查询:
|
|
|
|
函数对于特定的数据类型(比如图像和几何对象)来说特别有用。例如,用在地图数据库中的一个多边形数据类型可能有一个相关函数用于判断两个多边形是否重叠,一个图像数据类型可能有一个相关函数用于比较两幅图的相似性。函数可以用外部语言(比如C)来编写。一些数据库系统也支持返回关系(即元组的多重集合)的函数,尽管SQL-99并不支持这些函数。
|
|
|
前面介绍的方法,可以看作与结构类型相关联的函数。它们的第一个参数self是隐含的,它被设置为调用这个方法的结构类型的值。因此,方法主体可以通过self.a来引用这个值的属性a。这些属性也可以被该方法更新。
|
|
|
SQL-99也支持过程。author-count函数也可以写成一个过程:
|
|
|
|
可以从一个SQL过程中或者从嵌入式SQL中使用call语句调用过程:
|
|
|
|
SQL-99允许多个过程同名,只要同名的不同过程的参数个数不同。名称和参数个数用于标识一个过程。SQL-99也允许多个函数同名,只要这些同名的不同函数的参数个数不同,或者,对于那些有相同个数参数的函数,至少有一个参数的类型不同。
|
|
|