JDBC存储过程调用带输入参数的存储过程
在数据库中创建带参数存储过程
@JDBC---带输入参数的存储过程
存储过程的代码:
CREATE PROCEDURE `sp_select_nofilter`(IN sp_name VARCHAR(20)) BEGIN IF sp_name IS NULL OR sp_name = '' THEN SELECT * FROM user1; ELSE IF LENGTH(sp_name)=11 AND SUBSTRING(sp_name,1,1)=1 THEN SELECT * FROM user1 WHERE user_naem=sp_name; ELSE SELECT *FROM user1 WHERE user_name LIKE CONCAT('%',sp_name,'%'); END IF; END IF; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select_filter(?)"); cs.setString(1,sp_name); //3.执行存储过程 cs.execute(); //4.处理结果集 ResultSet rs = cs.getResultSet(); //5.遍历结果集 while (rs.next()){ rs.getString(...); ... }
-调用带参的储存过程
mysql语句
CREATE PROCEDURE sp_select_filter(IN sp_name VARCHAR(20))
BEGIN
IF sp_name IS NULL OR sp_name = '' THEN
SELECT * FROM imooc_goddess;
ELSE
IF LENGTH(sp_name)=11 AND substring(sp_name,1,1) THEN
SELECT * FROM imooc_goddess WHERE mobile = sp_name;
ELSE
SELECT * FROM imooc_goddess WHERE user_name LIKE concat('%',sp_name,'%');
EN D IF;
END IF;
END
create procedure a(in a varchar(20))
begin
if a is null or a='' then
select * from es;
else
if length(a)=11 and subString (a,1,1)=1 then
select * from es where moble=a;
else
select * from es where use_name like concat('%',a,'%');
end if;
end if;
end
@JDBC---带输入参数的存储过程
存储过程的代码:
CREATE PROCEDURE `sp_select_nofilter`(IN sp_name VARCHAR(20)) BEGIN IF sp_name IS NULL OR sp_name = '' THEN SELECT * FROM user1; ELSE IF LENGTH(sp_name)=11 AND SUBSTRING(sp_name,1,1)=1 THEN SELECT * FROM user1 WHERE user_naem=sp_name; ELSE SELECT *FROM user1 WHERE user_name LIKE CONCAT('%',sp_name,'%'); END IF; END IF; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select_filter(?)"); cs.setString(1,sp_name); //3.执行存储过程 cs.execute(); //4.处理结果集 ResultSet rs = cs.getResultSet(); //5.遍历结果集 while(rs.next()){ rs.getString(...); ... }