SQL 数据访问特性
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
一些方言需要显式指定函数的几个特性,定义函数允许(和期望)拥有哪些类型的内容。这些特性既充当开发的契约(类似于 java.lang.FunctionalInterface
注解),也向数据库提示函数是否预期具有副作用(因此可能无法在 SELECT 语句 中使用),或者它是否依赖于数据,或者是否是纯粹确定性的(另请参见 DETERMINISTIC 特性)。 SQL 数据访问特性包括
-
NO SQL(无 SQL)
-
CONTAINS SQL(包含 SQL)
-
READS SQL DATA(读取 SQL 数据)
-
MODIFIES SQL DATA(修改 SQL 数据)
虽然语义看起来很清晰,但请参阅您的数据库手册以了解详细信息,因为可能存在细微的差异,例如,关于哪些特定的 过程语句 构成 "SQL"。
如果您的方言不支持某个特性,您仍然可以指定它,jOOQ 将简单地在生成的 SQL 中忽略它。
create.createFunction("f1").returns(INTEGER).noSQL().as(return_(1)).execute(); create.createFunction("f2").returns(INTEGER).containsSQL().as(return_(select(val(1)))).execute(); create.createFunction("f3").returns(INTEGER).readsSQLData().as(return_(selectCount().from(BOOK))).execute(); create.createFunction("f4").returns(INTEGER).modifiesSQLData().as( insertInto(LOGS).columns(LOGS.TEXT).values("Function F4 was called"), return_(1) ).execute();
这与 过程的 SQL 数据访问特性 工作方式相同
反馈
您对此页面有任何反馈吗? 我们很乐意听到它!