MYSQL存储过程<二>:执行用字符串拼成的sql语句

//存储过程
DELIMITER $$

DROP PROCEDURE IF EXISTS `fans`.`voteresultstat`$$

CREATE DEFINER=`fans`@`%` PROCEDURE `voteresultstat`(in _playerid varchar(100))
begin
set @varPlayerid = _playerid;/**此处必须用成员变量*/
set @selectSql = 'select * from voteplayer';
if _playerid <> '' then
set @selectSql = concat(@selectSql,' where voteplayer.playerid=?');
end if;
set @selectSql = concat(@selectSql,' order by voteplayer.createtime desc ');
prepare stmt from @selectSql;/**预编译prepare stmt from ... 执行字符串sql语句*/
if _playerid <> '' then
EXECUTE stmt using @varPlayerid; /**执行带有参数的sql*/
else
EXECUTE stmt; /**执行不带有参数的sql*/
end if;
end$$

DELIMITER ;

SQLyob调用:
            call voteresultstat('');
JAVA调用:
            try {
Connection conn=MySqlDataSourceFactory.getInstance().getConnection();
CallableStatement cs = conn.prepareCall("{call voteresultstat(?)}");
cs.setString(1,"12");
cs.execute();
ResultSet rs = cs.getResultSet();
int count=0;
while(rs.next()){
System.out.println(rs.getInt("votes"));
count++;
if(count==10){
break;
}
}
cs.close();
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}

转载于:https://my.oschina.net/bysag/blog/71867

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值