--1.声明定时任务 DECLARE job NUMBER; BIGIN dbms_job.sumit( job, --任务ID,系统定义的 'test_prcedure(19)',--调用存储过程? to_date('20240305 02:00','yyyymmdd hh24:mi') --任务开始时间 'sysdate+1/(24*60)' --任务执行周期 [每分钟执行一次] ); COMMIT; END; --2.定义存储过程 CREATE OR REPLACE procedure test_prcedure(in_num number) IS BEGIN dbms_output_put_line(in_num) --打印输出19,当然它实际应该是一些列增删改操作 END
分支语句
循环语句
游标操作(类比集合)
java调用存储过程
package com.dj.springtest.demo; import java.sql.*; /** * User: ldj * Date: 2024/3/4 * Time: 23:48 * Description: java调用存储过程 */ public class CallProcedureDemo { public static void main(String[] args) throws Exception { Connection connection = null; CallableStatement callableStatement = null; try { //加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //通过驱动管理器获取连接对象 String url = "jdbc:oracle:thin:@localhost:1521:xe"; String username = "root"; String password = "123456"; connection = DriverManager.getConnection(url, username, password); //拼接sql脚本,调用存储过程(test_procedure)有1个入参,1个出参 String sql = "{call test_procedure(?,?)}"; callableStatement = connection.prepareCall(sql); //设置入参和出参 callableStatement.setInt(1, 18); callableStatement.registerOutParameter(2, JDBCType.DOUBLE); //执行sql callableStatement.execute(); //获取结果 System.out.println(callableStatement.getDouble(2)); } catch (Exception e) { e.printStackTrace(); } finally { //关闭连接 if (callableStatement != null) { callableStatement.close(); } if (connection != null) { connection.close(); } } } }