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(...);
...
}