您的位置:首页 > 数据库 > MySQL

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

2012-08-10 14:03 525 查看
参考资料:
http://blog.sina.com.cn/s/blog_6819fa800100ky2j.html

//存储过程

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息