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]

注:in:这个参数只是用来往储存方法里输入;
out:这个参数只能用来从存储方法里输出;使用时要给参数来接收数据;
inout:这个参数既能输入又能输出(但注意,不代表能代替上两种类型);使用时参数要有初值,同时要注意运行后参数里面时得到的数据。

自己创建的存储过程

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;

java执行代码:

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;

java执行代码:

 //函数可以嵌入到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));
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT界的一只菜鸟

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值