关于Mysql存储过程的问题!

关于Mysql存储过程的问题!,第1张

创建过程

DROP PROCEDURE proc1

DELIMITER //

CREATE PROCEDURE proc1(OUT s int)   

BEGIN

SELECT COUNT(*) INTO s FROM class   

END//

DELIMITER 

使用过程:

SET @p_out=1

CALL proc1(@p_out)

SELECT @p_out

这个问题 专门写了一个mysql function,实现的功能是,返回前几条记录。其实还可以在完善的,返回这些记录的数据的。

delimiter $$

drop function if exists top7$$

create function top7(num int(11))

returns int(11)

begin

declare totalPrice int

declare i int

declare countNum int

declare tmp int

select count(1) into countNum from mywcd

set i=0

set totalPrice=0

set tmp=0

tt:

while i<countNum

do

set tmp=(select price from mywcdlimit i,1)

set i=i+1

set totalPrice=totalPrice+tmp

if totalPrice>=num then

leave tt

end if

end while

return i

end

$$

delimiter

mysql>select * from mywcd

+—-+——-+

| id | price |

+—-+——-+

| 1 | 100 |

| 2 | 200 |

| 3 | 300 |

| 4 | 400 |

| 5 | 500 |

| 6 | 600 |

+—-+——-+

6 rows in set (0.00 sec)

这是我测试数据的表全部记录。

调用以及返回结果:

mysql>select top7(1001)

+————+

| top7(1001) |

+————+

| 5 |

+————+

1 row in set (0.00 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8717588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存