如何使用 jOOQ 将 Oracle PL/SQL 常量作为参数传递?
How do I pass Oracle PL/SQL constants as parameters using jOOQ?
我正在尝试将一些使用 PL/SQL 的 Oracle 查询转换为 jOOQ。使用代码生成器,大多数包查询、存储过程等都很容易。然而,在几个地方使用了一个功能,我还没有找到 jOOQ 的替代品:
begin
MY_SCHEMA.MY_PACKAGE.MY_QUERY(some_param => MY_SCHEMA.MY_PACKAGE.SOME_CONSTANT)
-- more code
end;
我可以很好地调用查询,但我不确定如何将 MY_SCHEMA.MY_PACKAGE.SOME_CONSTANT
值传递给它。 jOOQ 代码生成器似乎没有为常量生成任何东西(至少,我找不到任何类似名称的东西)。我需要在生成器上启用某个功能吗?还是我需要查询这些常量?如果是,怎么做?
启用 PL/Scope 以使其工作
jOOQ 可以为您的包常量生成代码 if 它可以在您的 ALL_IDENTIFIERS
字典视图中找到它们。只有在编译包时启用 PLSCOPE_SETTINGS
才会出现这种情况,例如使用:
ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL'
有了它,jOOQ 将为您的包常量生成表达式,您可以在例程调用或其他 procedural logic.
中使用这些表达式
PL/Scope独立
Simon Martinelli 在评论中提到的问题 https://github.com/jOOQ/jOOQ/issues/6504,即使没有打开上述 PL/Scope 设置,它也会尝试启用此代码生成支持,因为根据您的环境,这非常不可靠.
截至 jOOQ 3.15,还没有适用于任何 Oracle 环境的解决方案。 But you could use testcontainers to generate your jOOQ code 来自启用了 PL/Scope 的 Docker 图片。
我正在尝试将一些使用 PL/SQL 的 Oracle 查询转换为 jOOQ。使用代码生成器,大多数包查询、存储过程等都很容易。然而,在几个地方使用了一个功能,我还没有找到 jOOQ 的替代品:
begin
MY_SCHEMA.MY_PACKAGE.MY_QUERY(some_param => MY_SCHEMA.MY_PACKAGE.SOME_CONSTANT)
-- more code
end;
我可以很好地调用查询,但我不确定如何将 MY_SCHEMA.MY_PACKAGE.SOME_CONSTANT
值传递给它。 jOOQ 代码生成器似乎没有为常量生成任何东西(至少,我找不到任何类似名称的东西)。我需要在生成器上启用某个功能吗?还是我需要查询这些常量?如果是,怎么做?
启用 PL/Scope 以使其工作
jOOQ 可以为您的包常量生成代码 if 它可以在您的 ALL_IDENTIFIERS
字典视图中找到它们。只有在编译包时启用 PLSCOPE_SETTINGS
才会出现这种情况,例如使用:
ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL'
有了它,jOOQ 将为您的包常量生成表达式,您可以在例程调用或其他 procedural logic.
中使用这些表达式PL/Scope独立
Simon Martinelli 在评论中提到的问题 https://github.com/jOOQ/jOOQ/issues/6504,即使没有打开上述 PL/Scope 设置,它也会尝试启用此代码生成支持,因为根据您的环境,这非常不可靠.
截至 jOOQ 3.15,还没有适用于任何 Oracle 环境的解决方案。 But you could use testcontainers to generate your jOOQ code 来自启用了 PL/Scope 的 Docker 图片。