【问题标题】:Run Oracle Sql Script via Java通过 Java 运行 Oracle Sql 脚本
【发布时间】:2012-05-31 20:01:58
【问题描述】:

我写了一个java程序来insert and update oracle数据库的数据。在插入或更新数据之前,我需要DISABLE 一些触发器。在插入或更新数据后还需要ENABLE 以前的 DISABLED 触发器。我写了两个 sql 脚本作为 pre_script.sqlpost_script.sqlDISABLEENABLE 触发器。

如何使用 java 运行这些文件?有什么方法可以传递这些 sql 文件以在 java 中执行?

【问题讨论】:

标签: java oracle triggers oracle11g


【解决方案1】:

最简单的选择是将您的 SQL 脚本创建为数据库中的存储过程或函数,然后只需要从 Java 进行简单调用即可执行它们。

CallableStatement cs = conn.prepareCall("{ call pre_script_as_func() }");
cs.execute();

// do inserts, updates 

cs = conn.prepareCall("{ call post_script_as_func() }");
cs.execute();

【讨论】:

    【解决方案2】:
    import java.io.*;
    import java.sql.*;
    

    假设连接对象为conn

    从连接对象创建 SQL 语句:

    Statement DMLString conn.createStatement();
    

    创建一个字符串变量并使用alter trigger语句填充:

    String sql = "ALTER TRIGGER [TRIGGER_NAME] DISABLE";
    

    对数据库执行 SQL

    String  result = DMLString.execute(sql.toString());
    

    【讨论】:

    • 抱歉应该提到您可以将文件(pre_script.sql,post_script.sql)读入Java并使用上述方法将每个语句推送到数据库。
    • 哦,有谁知道为什么我的这个答案被扣分了?我仍在调整我的 StackOverflow 体验....
    • 您的ALTER TRIGGER 语法不正确,例如。应该是ALTER TRIGGER [TRIGGER_NAME] DISABLE
    • @phil - 谢谢,我已经修改了上面的例子。
    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 2021-06-04
    • 2020-08-04
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多