mysql - SQL,缺少结尾,但为什么?

标签 mysql stored-procedures

我的 SQL 过程有问题。 MySQLWorkbench 告诉我它错过了我的第一个 SET 的“结束”,但第二个没有。我不知道为什么。

DELIMITER $
drop procedure if exists pay10percent$
create procedure pay10percent(IN montant decimal(9,2),IN idResa INT(5))
begin
declare circuitid INT;
SET circuitid = (
            SELECT IDCIRCUIT  
            FROM RESERVATION 
            WHERE IDRESERVATION=idResa
            );
declare montantCircuit decimal(9,2);
SET montantCircuit = (SELECT PRIX FROM CIRCUIT WHERE IDCIRCUIT=circuitid);
end;
$
DELIMITER ;

谢谢。

最佳答案

您必须在使用SET 之前声明所有变量。或者,您可以删除 SET 并将该子查询用作默认值:

declare circuitid INT DEFAULT (
    SELECT IDCIRCUIT  
    FROM RESERVATION 
    WHERE IDRESERVATION=idResa
);

关于mysql - SQL,缺少结尾,但为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30917086/

相关文章:

MySQL:将同一个表中具有不同列名的多个 WHERE 子句组合在一起

java - 如何使用 spring jdbc 存储过程将用户定义的数据类型变量的值从 java 传递到 MS SQL

sql - 5 秒 SP 通过 LINQ-to SQL 达到 30 秒超时

php - 回显名称而不是数据库中的值

php - 从字符串 PHP 中删除空格并插入数据库

mysql - 标记博客文章时我真的应该使用关系表吗?

sql-server - 在具有IF条件的情况下在SQL Server中引发错误(THROW命令)-SQL Server

mysql - 有条件地显示 MySQL 存储过程中查询的一部分

sql-server - 以较低的优先级运行 SQL Server 2008 存储过程

Java Spring Boot/Mysql - 使用 HashSet 作为参数进行查询