Call Statements

Call 语句用来调用存储过程。存储过程通常是用来执行一些数据操作和管理任务的。

注意 目前 Call 语句要求被调用的存储过程在对应的 Catalog 中。所以,在调用存储过程前,请确保该存储过程在对应的 Catalog 中。 否则就会抛出异常。你可能需要查看对应 Catalog 的文档来知道该 Catalog 有哪些存储过程可用。要实现一个存储过程,请参阅 存储过程

Run a CALL statement

Java

CALL 语句可以使用 TableEnvironment 中的 executeSql() 方法执行。executeSql() 方法执行 CALL 语句时会立即调用这个存储过程,并且返回一个 TableResult 对象,通过该对象可以获取调用存储过程的结果。

以下的例子展示了如何在 TableEnvironment 中执行一条 CALL 语句。

Scala

CALL 语句可以使用 TableEnvironment 中的 executeSql() 方法执行。executeSql() 方法执行 CALL 语句时会立即调用这个存储过程,并且返回一个 TableResult 对象,通过该对象可以获取调用存储过程的结果。

以下的例子展示了如何在 TableEnvironment 中执行一条 CALL 语句。

Python

CALL 语句可以使用 TableEnvironment 中的 execute_sql() 方法执行。execute_sql() 方法执行 CALL 语句时会立即调用这个存储过程,并且返回一个 TableResult 对象,通过该对象可以获取调用存储过程的结果。

以下的例子展示了如何在 TableEnvironment 中执行一条 CALL 语句。

SQL CLI

可以在 SQL CLI 中执行 CALL 语句。

以下的例子展示了如何在 SQL CLI 中执行一条 CALL 语句。

Java

  1. TableEnvironment tEnv = TableEnvironment.create(...);
  2. // 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
  3. tEnv.executeSql("CALL `system`.generate_n(4)").print();

Scala

  1. val tEnv = TableEnvironment.create(...)
  2. // 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
  3. tEnv.executeSql("CALL `system`.generate_n(4)").print()

Python

  1. table_env = TableEnvironment.create(...)
  2. # 假设存储过程 `generate_n` 已经存在于当前 catalog 的 `system` 数据库
  3. table_env.execute_sql().print()

SQL CLI

  1. -- 假设存储过程 `generate_n` 已经存在于当前 catalog `system` 数据库
  2. Flink SQL> CALL `system`.generate_n(4);
  3. +--------+
  4. | result |
  5. +--------+
  6. | 0 |
  7. | 1 |
  8. | 2 |
  9. | 3 |
  10. +--------+
  11. 4 rows in set
  12. !ok

Syntax

  1. CALL [catalog_name.][database_name.]procedure_name ([ expression [, expression]* ] )