employees表中有一个officecode
和employeeNumber
,它在office表中引用city
。
我想要创建一个存储过程setRelocationFee
来设置给定员工的重新定位费。如果雇员的办公室在旧金山,搬迁费为10000美元;如果雇员的办公室在波士顿,则搬迁费为8000美元;如果雇员的办公室在伦敦,则搬迁费为20000美元;如果雇员在其他办公室工作,则搬迁费为15000美元。
我使用了这些代码来测试这个过程,这给我带来了错误:结果包含多行:
set @empID = 1501; call setRelocationFee(@empID, @Rfee); select @empID, @Rfee;
DELIMITER |
CREATE PROCEDURE setRelocationFee(IN empID INT(20), OUT Rfee INT(20)) BEGIN
DECLARE relocation varchar(50) default 0;
SELECT city INTO relocation
FROM employees LEFT JOIN offices ON
employeeNumber = empID;
CASE relocation
WHEN 'San Francisco' THEN SET Rfee = '$10000';
WHEN 'Boston' THEN SET Rfee = '$8000';
WHEN 'London' THEN SET Rfee = '$20000';
ELSE
SET Rfee = '$15000';
END CASE; END |
发布于 2019-11-23 18:22:41
我不明白您为什么要在SP表单中实现这一点,但是如果,那么(一个带有最小版本的变体)
DELIMITER |;
CREATE PROCEDURE setRelocationFee(IN empID INT(20), OUT Rfee INT(20))
BEGIN
DECLARE relocation varchar(50) default 0;
SELECT city INTO relocation
FROM employees
LEFT JOIN offices ON employeeNumber = empID;
SET Rfee = CASE relocation
WHEN 'San Francisco' THEN '$10000'
WHEN 'Boston' THEN '$8000'
WHEN 'London' THEN '$20000'
ELSE '$15000'
END ;
END |;
DELIMITER ;
发布于 2019-11-23 20:26:08
将字符串'$10000'
存储到INT
中将存储一个零。
建议不要将$
包括在数据库中的任何地方,而是在输出期间应用它。
https://dba.stackexchange.com/questions/253972
复制相似问题