EXECUTE 语句
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
许多方言支持从过程代码运行动态 SQL 的某种方式。为此,可以使用 EXECUTE
或 EXECUTE IMMEDIATE
语句。
在某些方言(例如 Oracle PL/SQL)中,使用 EXECUTE
是从过程代码运行 DDL 的唯一方法。
例如
-- PL/SQL BEGIN EXECUTE IMMEDIATE 'CREATE TABLE t (col int)'; END;
// All dialects create.begin( execute(createTable("t").column("col", INTEGER).getSQL()) ).excute();
您显然可以直接将任意字符串传递给 EXECUTE
语句,就像在 PL/SQL 中一样,但上面的示例展示了如何通过调用 Query.getSQL()
,将这种方法与动态创建的 jOOQ 语句一起使用。
方言支持
此示例使用 jOOQ
execute("create table t (i int)")
翻译成以下特定方言的表达式
Aurora Postgres、CockroachDB、Postgres、YugabyteDB
EXECUTE 'create table t (i int)'
BigQuery、DB2、Hana、MariaDB、Oracle、Snowflake
EXECUTE IMMEDIATE 'create table t (i int)'
Firebird
EXECUTE STATEMENT 'create table t (i int)'
MySQL
CREATE PROCEDURE block_1752830487550_8599219() MODIFIES SQL DATA BEGIN PREPARE s FROM 'create table t (i int)'; EXECUTE s; DEALLOCATE PREPARE s; END; CALL block_1752830487550_8599219(); DROP PROCEDURE block_1752830487550_8599219;
SQLServer
EXECUTE ('create table t (i int)')
ASE、Access、Aurora MySQL、ClickHouse、Databricks、Derby、DuckDB、Exasol、H2、HSQLDB、Informix、MemSQL、Redshift、SQLDataWarehouse、SQLite、Sybase、Teradata、Trino、Vertica
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的意见!