有关 CALL 语句的语法和参数的详细信息,请参阅 CALL 语句。有关使用 CALL 的示例,请参阅 CREATE PROCEDURE 语句中的示例。
如果例程的定义指定 ESQL 的 LANGUAGE 子句或例程是内置函数,则以 ESQL 方法调用该例程。
在定义和 CALL 之间,必须存在数据类型和每个参数方向的精确一对一匹配。
允许 ESQL 例程返回任何 ESQL 数据类型,但不包括列表和行。
如果例程的定义指定 Java 的 LANGUAGE 子句,则以 JAVA 方法调用该例程。
在定义和 CALL 之间,必须存在数据类型和每个参数方向的精确一对一匹配。
如果 Java 方法有空返回类型,则不能使用 INTO 子句,因为不存在要返回的值。
Java 例程可返回 ESQL 到 Java 的数据类型映射表中的任何数据类型。 请注意,这不包括列表和行。
如果例程的定义指定 DATABASE 的 LANGUAGE 子句,则以 DATABASE 存储过程调用该例程。
对数据库存储过程进行调用时,代理会搜索与过程的局部名相匹配的定义(由 CREATE PROCEDURE 语句定义)。 然后,代理使用以下序列解析为数据库中过程所知的名称以及该过程所属的数据库模式:
如果调用的例程在其定义中指定了任何 DYNAMIC RESULT SETS,则 CALL 语句的 ParameterList 中的表达式数量必须等于到例程的实际参数数量与 DYNAMIC RESULT SETS 数量之和。例如,如果例程有三个参数、两个 DYNAMIC RESULT SETS,则 CALL 语句必须传递五个参数到调用的例程。 所传递的用于两个 DYNAMIC RESULT SETS 的参数必须为列表参数;即,必须为使用数组方括号 [ ] 限定的字段引用;例如,Environment.ResultSet1[]。
允许数据库存储过程返回任何 ESQL 数据类型,但不包括时间间隔、列表和行。