This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
Call Statements #
Call
语句用来调用存储过程。存储过程通常是用来执行一些数据操作和管理任务的。
注意 目前 Call
语句要求被调用的存储过程在对应的 Catalog 中。所以,在调用存储过程前,请确保该存储过程在对应的 Catalog 中。
否则就会抛出异常。你可能需要查看对应 Catalog 的文档来知道该 Catalog 有哪些存储过程可用。要实现一个存储过程,请参阅 存储过程。
Run a CALL statement #
CALL 语句可以使用 TableEnvironment
中的 executeSql()
方法执行。executeSql()
方法执行 CALL 语句时会立即调用这个存储过程,并且返回一个 TableResult
对象,通过该对象可以获取调用存储过程的结果。
以下的例子展示了如何在 TableEnvironment
中执行一条 CALL 语句。
CALL 语句可以使用 TableEnvironment
中的 executeSql()
方法执行。executeSql()
方法执行 CALL 语句时会立即调用这个存储过程,并且返回一个 TableResult
对象,通过该对象可以获取调用存储过程的结果。
以下的例子展示了如何在 TableEnvironment
中执行一条 CALL 语句。
CALL 语句可以使用 TableEnvironment
中的 execute_sql()
方法执行。execute_sql()
方法执行 CALL 语句时会立即调用这个存储过程,并且返回一个 TableResult
对象,通过该对象可以获取调用存储过程的结果。
以下的例子展示了如何在 TableEnvironment
中执行一条 CALL 语句。
可以在 SQL CLI 中执行 CALL 语句。
以下的例子展示了如何在 SQL CLI 中执行一条 CALL 语句。
TableEnvironment tEnv = TableEnvironment.create(...);
// 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
tEnv.executeSql("CALL `system`.generate_n(4)").print();
val tEnv = TableEnvironment.create(...)
// 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
tEnv.executeSql("CALL `system`.generate_n(4)").print()
table_env = TableEnvironment.create(...)
# 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
table_env.execute_sql().print()
-- 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
Flink SQL> CALL `system`.generate_n(4);
+--------+
| result |
+--------+
| 0 |
| 1 |
| 2 |
| 3 |
+--------+
4 rows in set
!ok
Syntax #
CALL [catalog_name.][database_name.]procedure_name ([ expression [, expression]* ] )