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

表值函数

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

一些数据库支持可以生成表的函数,以供任意 SELECT 语句使用。jOOQ 为这些数据库开箱即用地支持这些函数。例如,在 SQL Server 中,以下函数生成一个包含所有书籍或仅包含按 ID 查找的一本书的 (ID, TITLE) 列的表

CREATE FUNCTION f_books (@id INTEGER)
RETURNS @out_table TABLE (
    id INTEGER,
    title VARCHAR(400)
)
AS
BEGIN
    INSERT @out_table
    SELECT id, title
    FROM book
    WHERE @id IS NULL OR id = @id
    ORDER BY id
    RETURN
END

jOOQ 代码生成器现在将从上面生成一个 生成的表,该表可用作 SQL 函数

// Fetching all books records
Result<FBooksRecord> r1 = create.selectFrom(fBooks(null)).fetch();

// Lateral joining the table-valued function to another table using CROSS APPLY:
create.select(BOOK.ID, F_BOOKS.TITLE)
      .from(BOOK.crossApply(fBooks(BOOK.ID)))
      .fetch();

反馈

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

The jOOQ Logo