可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15

CALL 语句

适用于 ❌ 开源版   ✅ Express 版   ✅ 专业版   ✅ 企业版

当使用 CREATE PROCEDURE 语句时,为了更好的可组合性,能够从另一个过程调用一个过程至关重要。 这可以使用 CALL 语句完成。

// Create a procedure that inserts a log message in a table
Parameter<String> message = in("message", VARCHAR);

create.createProcedure("log")
      .parameters(message)
      .as(insertInto(LOG).columns(LOG.TEXT).values(message))
      .execute();

create.createProcedure("some_other_procedure")
      .as(
      // ...
      call("log").args(val("My first message")),
      // ...
      call("log").args(val("My second message"))
      // ...
      )
      .execute();
      

方言支持

此示例使用 jOOQ

call("log").args(val("message"))

翻译成以下特定方言的表达式

BigQuery, DB2, HSQLDB, Hana, MariaDB, MySQL, Postgres, Snowflake, YugabyteDB

CALL log('message')

Firebird, Informix

EXECUTE PROCEDURE log('message')

Oracle

BEGIN
  log('message');
END;

SQLDataWarehouse, SQLServer

EXEC log 'message'

ASE, Access, Aurora MySQL, Aurora Postgres, ClickHouse, CockroachDB, Databricks, Derby, DuckDB, Exasol, H2, MemSQL, Redshift, SQLite, Sybase, Teradata, Trino, Vertica

/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo