WHILE 语句
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
最常用的循环类型之一是 WHILE
语句,其过程式形式的工作方式与 Java while
语句非常相似,只是语法略有不同。
与之前的 LOOP 语句一样,过程式方言可能会或可能不会使用 LOOP
关键字来分隔循环体。出于 DSL 设计原因,jOOQ API 始终使用它。 例如,将 WHILE
循环与 变量赋值语句 结合使用
-- PL/SQL syntax WHILE i <= 10 LOOP INSERT INTO t (col) VALUES (i); END LOOP;
// All dialects Variable<Integer> i = var("i", INTEGER); while_(i.le(10)).loop( insertInto(T).columns(T.COL).values(i) )
while_(i.le(10)).loop(deleteFrom(BOOK).where(BOOK.ID.eq(i)))
翻译成以下特定方言的表达式
Aurora Postgres, CockroachDB, Exasol, Informix, Oracle, Postgres, YugabyteDB
WHILE i <= 10 LOOP DELETE FROM BOOK WHERE BOOK.ID = i; END LOOP
BigQuery, DB2, HSQLDB, Hana, MariaDB, MySQL, Trino
WHILE i <= 10 DO DELETE FROM BOOK WHERE BOOK.ID = i; END WHILE
Firebird
WHILE (:i <= 10) DO BEGIN DELETE FROM BOOK WHERE BOOK.ID = :i; END
H2
while (i <= 10) { try (PreparedStatement s = c.prepareStatement( "DELETE FROM BOOK\n" + "WHERE BOOK.ID = ?" )) { s.setObject(1, i); s.execute(); } }
Snowflake
WHILE (:i <= 10) DO DELETE FROM BOOK WHERE BOOK.ID = :i; END WHILE
SQLDataWarehouse, SQLServer
WHILE @i <= 10 BEGIN DELETE FROM BOOK WHERE BOOK.ID = @i; END
ASE, Access, Aurora MySQL, ClickHouse, Databricks, Derby, DuckDB, MemSQL, Redshift, SQLite, Sybase, Teradata, Vertica
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!