函数、方法和过程指示符
本主题描述语法片段,这些片段用于唯一地识别并非在模块中定义的函数、方法或过程。
函数指示符
函数指示符用于唯一地识别单个函数。 函数标志符通常出现在函数 (例如 DROP 或 ALTER) 的 DDL 语句中。 函数指示符不得标识模块函数 (SQLSTATE 42883)。
- 函数 function-name
- 识别特定函数,并且仅当模式中正好存在一个名为 function-name 的函数实例时才有效。 所识别的函数可以定义有任意数目的参数。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 如果在指定或暗指的模式中不存在此名称的函数,那么会产生错误 (SQLSTATE 42704)。 如果在指定或暗指的模式中存在该函数的多个实例,那么会产生错误 (SQLSTATE 42725)。
- 函数 函数名(数据类型
- 提供函数特征符,该特征符唯一地识别函数。 不使用函数解析算法。
- 函数名
- 指定函数的名称。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 数据类型
- 值必须与 CREATE FUNCTION 语句上相应位置中指定的数据类型匹配。 使用数据类型的数目以及数据类型的逻辑并置来识别特定函数实例。
如果某种数据类型未限定,那么会通过在 SQL 路径上搜索模式来解析类型名称。 这也适用于指定给 REFERENCE 类型的数据类型名称。
不必指定参数化数据类型的长度、精度或小数位。 相反,可以编码一组空的括号,以指出查找数据类型匹配时应忽略这些属性。
不得使用 FLOAT() (SQLSTATE 42601),因为参数值指示不同的数据类型(REAL 或 DOUBLE)。
如果编码长度、精度或小数位,那么该值必须与 CREATE FUNCTION 语句中指定的值完全匹配。 指定字符和图形字符串数据类型的长度时,长度属性的字符串单位必须与 CREATE FUNCTION 语句中指定的字符串单位完全匹配。
A type of FLOAT(N) does not need to match the defined value for N, because 0 < N < 25 means REAL, and 24 < N < 54 means DOUBLE. 匹配会根据类型是 REAL 还是 DOUBLE 来进行。
如果在指定或暗指的模式中不存在具有指定特征符的函数,那么会产生错误 (SQLSTATE 42883)。
- 特定功能 特定名称
- 使用在创建函数时指定或缺省的名称来识别特定的用户定义函数。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 specific-name 必须识别所指定或暗指的模式中的特定函数实例,否则会产生错误 (SQLSTATE 42704)。
方法指示符
方法指示符用于唯一地识别单个方法。 方法指示符通常出现在方法的 DDL 语句(例如,DROP 或 ALTER)中。
- METHOD 方法名称
- 识别特定方法,并且仅当类型 type-name 正好有一个名为 method-name 的方法实例时才有效。 所识别的方法可以定义有任意数目的参数。 如果该类型没有所指定名称的方法,那么会产生错误 (SQLSTATE 42704)。 如果该类型有该方法的多个实例,那么会产生错误 (SQLSTATE 42725)。
- 方法 方法名称(数据类型
- 提供方法特征符,该特征符唯一地识别方法。 不使用方法解析算法。
- 方法名
- 指定类型 type-name 的方法名称。 数据类型
- 值必须与 CREATE TYPE 语句上相应位置中指定的数据类型匹配。 使用数据类型的数目以及数据类型的逻辑并置来识别特定方法实例。
如果某种数据类型未限定,那么会通过在 SQL 路径上搜索模式来解析类型名称。 这也适用于指定给 REFERENCE 类型的数据类型名称。
不必指定参数化数据类型的长度、精度或小数位。 相反,可以编码一组空的括号,以指出查找数据类型匹配时应忽略这些属性。
不得使用 FLOAT() (SQLSTATE 42601),因为参数值指示不同的数据类型(REAL 或 DOUBLE)。
如果编码长度、精度或小数位,那么该值必须与 CREATE TYPE 语句中指定的值完全匹配。 指定字符和图形字符串数据类型的长度时,长度属性的字符串单位必须与 CREATE TYPE 语句中指定的字符串单位完全匹配。
A type of FLOAT(N) does not need to match the defined value for N, because 0 < N < 25 means REAL, and 24 < N < 54 means DOUBLE. 匹配会根据类型是 REAL 还是 DOUBLE 来进行。
如果在指定或暗指的模式中不存在该类型的具有指定特征符的方法,那么会产生错误 (SQLSTATE 42883)。
- 对于 type-name
- 指定要与所指定方法相关联的类型。 该名称必须识别已在目录中描述的类型 (SQLSTATE 42704)。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。
- 特定方法 specific-name
- 使用在创建方法时指定或缺省的名称来识别特定的方法。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 specific-name 必须识别所指定或暗指的模式中的特定方法实例,否则会产生错误 (SQLSTATE 42704)。
过程指示符
过程指示符用于唯一地识别单个过程。 过程指示符通常出现在过程 (例如 DROP 或 ALTER) 的 DDL 语句中。 过程指示符不得标识模块过程 (SQLSTATE 42883)。
- PROCEDURE 过程名
- 识别特定过程,并且仅当模式中正好存在一个名为 procedure-name 的过程实例时才有效。 所识别的过程可以定义有任意数目的参数。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 如果在指定或暗指的模式中不存在此名称的过程,那么会产生错误 (SQLSTATE 42704)。 如果在指定或暗指的模式中存在该过程的多个实例,那么会产生错误 (SQLSTATE 42725)。
- PROCEDURE 程序名(数据类型
- 提供过程特征符,该特征符唯一地识别过程。 不使用过程解析算法。
- 过程名称
- 指定过程的名称。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 数据类型
- 值必须与 CREATE PROCEDURE 语句上相应位置中指定的数据类型匹配。 使用数据类型的数目以及数据类型的逻辑并置来识别特定过程实例。
如果某种数据类型未限定,那么会通过在 SQL 路径上搜索模式来解析类型名称。 这也适用于指定给 REFERENCE 类型的数据类型名称。
不必指定参数化数据类型的长度、精度或小数位。 相反,可以编码一组空的括号,以指出查找数据类型匹配时应忽略这些属性。
不得使用 FLOAT() (SQLSTATE 42601),因为参数值指示不同的数据类型(REAL 或 DOUBLE)。
如果编码长度、精度或小数位,那么该值必须与 CREATE PROCEDURE 语句中指定的值完全匹配。 指定字符和图形字符串数据类型的长度时,长度属性的字符串单位必须与 CREATE PROCEDURE 语句中指定的字符串单位完全匹配。
A type of FLOAT(N) does not need to match the defined value for N, because 0 < N < 25 means REAL, and 24 < N < 54 means DOUBLE. 匹配会根据类型是 REAL 还是 DOUBLE 来进行。
如果在指定或暗指的模式中不存在具有指定特征符的过程,那么会产生错误 (SQLSTATE 42883)。
- 特定过程 specific-name
- 使用在创建过程时指定或缺省的名称来识别特定的过程。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 specific-name 必须识别所指定或暗指的模式中的特定过程实例,否则会产生错误 (SQLSTATE 42704)。
