java jdbc 执行存储过程 和自定义函数

java jdbc 执行存储过程 和自定义函数

1、创建存储过程
CREATE
[DEFINER = { user | CURRENT_USER }]
 PROCEDURE sp_name ([proc_parameter[,…]])
[characteristic …] routine_body

proc_parameter:
[ IN | OUT | INOUT ] param_name type

characteristic:
COMMENT ‘string’
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }

routine_body:
  Valid SQL routine statement

[begin_label:] BEGIN
  [statement_list]
    ……
END [end_label]

create PROCEDURE select_security_user(in user_id INTEGER)
BEGIN
select * from security_user where id = user_id;
END

查询数据库中的存储过程
方法一:
select name from mysql.proc where db = ‘your_db_name’ and type = ‘PROCEDURE’
方法二:
show procedure status;
查看存储过程或函数的创建代码
show create procedure proc_name;
show create function func_name;

CallableStatement cs = (CallableStatement) conn.prepareCall(“{call select_security_user(?)}”);
cs.setInt(1, 1);
rs = cs.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(“username”) + ” ” + rs.getString(“password”));
}

2、创建自定函数
CREATE FUNCTION fn_name(func_parameter[,…])
RETURNS type
[characteristic…]
routine_body

create function fun_select_user(user_id INTEGER) RETURNS VARCHAR(200) CHARACTER set utf8
reads sql DATA
begin
DECLARE name VARCHAR(10)CHARACTER set utf8;

select username INTO NAME  from security_user where id = user_id;

return name;

end;

show create function func_name;

//函数可以嵌入到Sql中
String sql = “select fun_select_user(?) from dual”;
//调用方式还是和使用ps调用普通SQL一样
ps = (PreparedStatement) conn.prepareStatement(sql);
ps.setObject(1, 1);
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}

猜你喜欢

转载自blog.csdn.net/qq_22764659/article/details/81281859