中的功能代号 Db2 for z/OS
本主题介绍在 ALTER FUNCTION、GRANT 和 REVOKE 等语句中标识内置或用户定义函数的片段的 SQL 语法。 函数设计器通过名称、唯一标识函数的函数签名或具体名称来标识 SQL 函数。
函数代号 (ALTER FUNCTION )的语法
- 1 AS LOCATOR 只能为 LOB 数据类型或基于 LOB 数据类型的独特类型指定。
- 2 有关该片段的语法图,请参阅内置类型的语法。
- 3 array-type-name 仅支持编译后的 SQL 标量函数。
功能指定器 (GRANT 或 REVOKE)的语法
- 1 AS LOCATOR 只能为 LOB 数据类型或基于 LOB 数据类型的独特类型指定。
- 2 有关该片段的语法图,请参阅内置类型的语法。
- 3 array-type-name 仅支持编译后的 SQL 标量函数。
内置类型的语法
有关下图中内置数据类型的描述,请参阅 Db2 for z/OS 中的数据类型。
- FUNCTION 功能名称
用名称标识函数。 函数可以定义任意数量的参数。
function-name 必须在指定或隐含模式中准确标识一个功能。 如果模式中有多个函数,或模式中不包含具有函数名的函数,则返回错误信息。
对于内联标量函数或编译后的 SQL 标量函数,只有前 30 个参数决定了函数的唯一性。
- FUNCTION 函数名(参数类型,......)
- 通过函数签名标识 SQL 函数,函数签名是函数的唯一标识。
- 函数名
- 给出内联 SQL 标量函数的函数名。
如果指定了 function-name (),则标识的函数必须为零参数。
- (参数类型......)
- 指定函数的输入参数个数以及每个参数的名称和数据类型。
- (数据类型 ,......)
标识函数的输入参数个数和每个参数的数据类型。 每个参数的数据类型必须与 CREATE FUNCTION 语句中为相应位置的参数指定的数据类型一致。
对于具有长度、精度或比例属性的数据类型,可以使用一组空括号、指定一个值或接受默认值:
- 空括号表示 Db2 在判断数据类型是否匹配时忽略该属性。
例如,DEC() 将被视为与数据类型为 DEC(7,2) 的函数参数相匹配。 同样,DECFLOAT() 将被视为与 DECFLOAT(16) 或 DECFLOAT(34) 匹配。
FLOAT 不能用空括号指定,因为其参数值表示不同的数据类型(REAL 或 DOUBLE)。
- 如果为长度、精度或标度属性使用特定值,该值必须与 CREATE FUNCTION 语句中指定(隐式或显式)的值完全匹配。
FLOAT (n ) 的具体值不必与源函数的定义值完全一致,因为
1<=n<=21表示 REAL,而22<=n<=53表示 DOUBLE。 匹配基于数据类型是 REAL 还是 DOUBLE。 - 如果没有明确指定长度、精度或比例,也没有指定空括号,则默认使用数据类型的默认长度。 隐式长度必须与 CREATE FUNCTION 语句中指定(隐式或显式)的值完全匹配。
对于具有子类型或编码方案属性的数据类型,指定 FOR 子类型 DATA 子句或 CCSID 子句是可选的。 省略其中一个子句表示 Db2 在确定数据类型是否匹配时忽略该属性。 如果指定任一子句,则必须与 CREATE FUNCTION 语句中隐含或显式指定的值相匹配。
- 空括号表示 Db2 在判断数据类型是否匹配时忽略该属性。
- built-in-type
- 有关内置数据类型的说明,请参阅 CREATE TABLE 语句中的数据类型和 built-in-type 的说明。
- distinct-type-name
- 不同类型的名称。 更多信息,请参阅 " 不同类型 "。
有关指定参数列表的更多信息,请参阅 CREATE FUNCTION 语句(概述)。
显式或隐式模式中必须存在具有该函数签名的函数。
- 特定函数 specific-name
- 用具体名称标识函数。 该名称隐含或显式地限定了模式名称。 具体名称(specific-name )必须标识当前服务器上存在的一个具体功能。
