首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图运行一个过程时,错误表示结果包含多行。

试图运行一个过程时,错误表示结果包含多行。
EN

Database Administration用户
提问于 2019-11-23 02:05:51
回答 2查看 145关注 0票数 0

employees表中有一个officecodeemployeeNumber,它在office表中引用city

我想要创建一个存储过程setRelocationFee来设置给定员工的重新定位费。如果雇员的办公室在旧金山,搬迁费为10000美元;如果雇员的办公室在波士顿,则搬迁费为8000美元;如果雇员的办公室在伦敦,则搬迁费为20000美元;如果雇员在其他办公室工作,则搬迁费为15000美元。

我使用了这些代码来测试这个过程,这给我带来了错误:结果包含多行:

代码语言:javascript
运行
复制
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 |
EN

回答 2

Database Administration用户

发布于 2019-11-23 18:22:41

我不明白您为什么要在SP表单中实现这一点,但是如果,那么(一个带有最小版本的变体)

代码语言:javascript
运行
复制
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 ;
票数 0
EN

Database Administration用户

发布于 2019-11-23 20:26:08

将字符串'$10000'存储到INT中将存储一个零。

建议不要将$包括在数据库中的任何地方,而是在输出期间应用它。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/253972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档