免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2173 | 回复: 0
打印 上一主题 下一主题

MySql带参数的存储过程编写(动态执行SQL语句) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-29 14:52 |只看该作者 |倒序浏览
该存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有
调用方式:call GetUsersDynamic('age/********动态查询用户的信息********/

CREATE PROCEDURE GetUsersDynamic(WhereCondition varchar(500),OrderByExpress varchar(100))

begin

declare stmt varchar(2000);

if LENGTH(OrderbyExpress)>0 then

begin

     set @sqlstr=concat('select id,name,password,age,getdate(adddate) as AddDate from users where ',WhereCondition,' order by ',OrderByExpress);

end;

else

begin

     set @sqlstr=concat('select id,name,password,age,getdate(adddate) as AddDate from users where ',WhereCondition);

end;

end if;

prepare stmt from @sqlstr;

execute stmt;

end;


getdate()是一个自定义的函数,作用是返回日期的短格式

CREATE DEFINER=`root`@`localhost` FUNCTION `getdate`($date datetime) RETURNS varchar(50) CHARSET latin1

return date_format($date,'%Y-%m-%d');

动态插入数据的存储过程,(注意四个单引号表示一个一引号):
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertUser`(in name2 varchar(50),in password2 varchar(32),in age2 int,in adddate2 datetime)
begin
DECLARE stmt varchar(2000);
set @sqlstr=concat('insert into users(name,password,age,adddate) values(');
set @sqlstr=concat(@sqlstr,'''',name2,'''',',','''',password2,'''',',',age2,',','''',adddate2,'''',')');
prepare stmt from @sqlstr;
execute stmt;
end;

http://www.bmestu.com/studynewstail.asp?Stnew_ID=1321

另一种带参数的形式:
在mysql存储过程中动态执行sql文
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
mysql> SET @a = 'select * from table1 ';
mysql> SET @b = 'where column1>10 limit 1';
mysql> SET @a = concat(@a,@b);
mysql> PREPARE stmt1 FROM @a;
mysql> EXECUTE stmt1;


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25096/showart_1671867.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP