我有这个存储过程。当我在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); }
感谢。
答案 0 :(得分:1)
您希望将例程创建为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 ;
答案 1 :(得分:0)
DELIMITER |
CREATE FUNCTION `sql_level`(exp INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE ReturnId INT;
SELECT id-1 INTO ReturnId
FROM `levels`
WHERE experience <= exp;
RETURN ReturnId;
END;
这是我最终使用它来使其工作。谢谢!希望这有助于某人!