Java中的SQL触发器调用函数

Posted

技术标签:

【中文标题】Java中的SQL触发器调用函数【英文标题】:SQL Trigger call function in Java 【发布时间】:2021-02-18 10:16:44 【问题描述】:

您好,我的毕业论文有问题。我应该在 Orale 上编写一个触发器,它应该执行一个 java 函数,但问题是:


create or replace function callTokengenerator
return boolean
as language java
NAME 'SqlStatements.setTrigger()
     return java.lang.Boolean';


create or replace PROCEDURE generateTokens
is
begin
    callTokengenerator;
end;


CREATE OR REPLACE TRIGGER tokengenerator AFTER UPDATE OF ACTIVE ON COURSE Declare
    run boolean := generateTokens;
BEGIN
    run;
END;

这是我产生的错误

Error Message

【问题讨论】:

您能告诉我们您使用的是什么RDBMS吗? Java-trigger 是高度依赖数据库的特性 具体有什么“问题”?请逐字添加任何错误消息(创建时或运行时) 【参考方案1】:

“RUN”不是有效的 Oracle 命令。触发器必须直接调用该函数。有关正确的触发器语法和构造,请参见此处:https://docs.oracle.com/en/database/oracle/oracle-database/19/jjdev/calling-Java-from-database-triggers.html#GUID-5C498DEF-0348-484D-AA26-2A88EF348D5C

试试这个:

create or replace function callTokengenerator
return boolean
as language java
NAME 'SqlStatements.setTrigger()
     return java.lang.Boolean';

CREATE OR REPLACE TRIGGER tokengenerator AFTER UPDATE OF ACTIVE ON COURSE 
DECLARE
    run boolean;
BEGIN
    run := callTokengenerator;
END;

【讨论】:

以上是关于Java中的SQL触发器调用函数的主要内容,如果未能解决你的问题,请参考以下文章

在 PL/SQL 中的触发器内调用函数

原始函数之前的 then 子句中的角度触发函数

SQL 函数调用中的 PHP 参数错误

什么是PL/SQL

在 Java 中调用 Oracle PL/SQL 中的过程或函数。返回结果集 false

MySQL中的存储过程