mysql执行带参数的sql_MySql带参数的存储过程编写(动态执行SQL语句)

本文介绍了如何在MySQL中编写一个带参数的存储过程,该过程可以根据用户输入的条件和可选排序方式动态执行查询用户信息的SQL语句。调用方式为call GetUsersDynamic('age<=30',''),存储过程内部通过判断条件来决定是否包含排序部分。" 104944027,9220337,C#实现:1到n整数中1出现的次数高效算法,"['算法', 'C#编程', '面试准备', '数学思维', '代码实现']

MySql带参数的存储过程编写

该存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有

调用方式:call GetUsersDynamic('age<=30','');

/********动态查询用户的信息********/

670baed43156e9516d411e7affb6eb96.png

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

69975ac54ad3f91511a05216069b9539.png

begin

536de222178973c9f2b152e4ec4d7a85.png

declare stmt varchar(2000);

28fc4f62d298e01a605486f7b0fc352f.png

if LENGTH(OrderbyExpress)>0 then

48b589be3f94a713d0875584233d8f2e.png

begin

a631e4847a1ee42b1985d7c4de4a81d8.png

set @sqlstr=concat('select id,name,password,age

from users where ',WhereCondition,' order by ',OrderByExpress);

be4c410df269ddb490abcf855c1cb1bb.png

end;

8a58685a3c70d1488c7dc91a960fc821.png

else

14c8230b3912e25c182ba9c826397813.png

begin

11e09e7f2ab9f652c705ae7742e69a90.png

set @sqlstr=concat('select id,name,password,age

from users where ',WhereCondition);

754df3cd0780a7d5be394fb7eb8474de.png

end;

0e375af18565b2d52576f34c4982f0f6.png

end if;

222c71c0fe52b15c44bd958f756acf79.png

prepare stmt from @sqlstr;

75ab032ebd14f1550d194b4abd94dc54.png

execute stmt;

054650a86c0defeb7d7c5469742e2a41.png

end;

注:prepare stmt from @sqlstr; 这个地方 @sqlstr 必须是这样写,不能是declare 的变量,

5a5ae539be0b280c36b82e49e33cb043.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值