我有这个存储过程。当我在 Wamp 上的 PhpMyAdmin 中执行它时,它说它已执行以及一切。当我尝试在查询中使用它时,它说该函数不存在。我做错了什么?
DELIMITER //
CREATE PROCEDURE `sql_level`(IN exp INT)
BEGIN
SELECT id
FROM `levels`
WHERE experience <= exp DESC LIMIT 1;
id = id-1;
END //
DELIMITER ;
这是我尝试运行的查询。
$id = 1;
if($stmt->prepare("SELECT sql_level(attack) FROM `users` WHERE id = ?")) {
$stmt->bind_param('i',$id);
$stmt->execute();
$stmt->bind_result($attack);
$stmt->fetch(); echo "<h1 align='center'>".$attack."</h1>"; }
else { die($stmt->error); }
谢谢。
最佳答案
您想将您的例程创建为 function而不是存储过程。
DELIMITER //
CREATE FUNCTION `sql_level`(exp INT)
RETURNS INT
BEGIN
DECLARE ReturnId INT;
SELECT id-1 INTO ReturnId
FROM `levels`
WHERE experience <= exp DESC LIMIT 1;
RETURN ReturnId;
END //
DELIMITER ;
关于Mysql存储过程不是有吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110899/