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();
}
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();
}
相关文章推荐
- MYSQL存储过程执行用字符串拼成的sql语句
- MySQL中limit使用动态参数的解决方法(拼接SQL字符串语句来执行SQL)
- [置顶] loadrunner连接MySQL执行SQL语句
- 一条sql语句搞定基于mysql的sql执行顺序的基本理解
- MySQL 数据库中使用 C 执行 SQL语句
- mysql存储过程执行动态sql语句
- php函数mysql_query批量执行多句sql语句
- mysql的sql语句中字符串作为字段查询
- MySQL sql语句执行顺序
- php函数mysql_query批量执行多句sql语句
- MySQL 数据库中使用 C 执行 SQL语句
- MySql SQL语句执行的顺序
- mysql显示SQL语句执行时间
- php与mysql建立连接并执行SQL语句的代码
- [转] 在 MySQL 数据库中使用 C 执行 SQL语句
- MySQL查看SQL语句执行效率
- MySQL查看SQL语句执行效率
- 跟踪监控MYSQL执行的sql语句
- MySQL执行SQL语句过程详解
- 如何查询mysql中执行效率低的sql语句