我是Mysql中的新手,并且似乎没有那么多关于他们的信息。我已经搜索过,无法得到任何工作。任何人都可以帮忙,这是代码
PROCEDURE while_loop()
BEGIN
SET @var_number_of_departments = (SELECT COUNT(DISTINCT departmentid) FROM employees); -- finds number of departments
SET @var_departmentid = 1; -- sets incrementing value to 1
WHILE @var_number_of_departments > @var_departmentid DO -- loop until all departments have been analyzed
SELECT Name FROM employees WHERE BossID IS NULL AND departmentid = @var_departmentid AND salary > (SELECT salary FROM employees WHERE bossID IS NOT NULL AND DepartmentID = @var_departmentid);
SET @var_departmentid = @var_departmentid + '1'; -- increment value in order to analyze the next department
end while;
end;
答案 0 :(得分:1)
您可以使用代码改进许多内容:
CREATE PROCEDURE
DELIMITER
语句,因此它不会按原样运行。也许你在其他地方设置了分隔符?如果没有,你需要一个。 要了解基本WHILE
循环如何运行,这是一个不使用任何SQL表查询的简单示例:
DELIMITER //
CREATE PROCEDURE basic_while()
BEGIN
SET @stopval := 5;
SET @counter := 1;
WHILE @counter <= @stopval DO
SELECT @counter;
SET @counter := @counter + 1;
END WHILE;
END//
DELIMITER ;
请注意使用DELIMITER
和单词CREATE
。
进一步说明一些可能有助于解决此特定问题的其他要点。
SET
行不应该在1
周围加引号,因为您希望将其视为整数。在这种情况下,它有效,但这是一个不好的习惯。回到存储过程,我建议您花一些时间浏览http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html上的官方语法文档,其中包含许多权威形式的文档。