【发布时间】:2017-03-31 07:49:54
【问题描述】:
我是 stackoverflow 的新手,也是 PL/SQL 的新手。我正在研究一些 PL/SQL 问题并试图解决这个问题。
基本上,我想创建一个名为 GET_ANNUAL_INCOME 的 PL/SQL 函数来返回指定员工的年薪,根据这个公式根据员工的月薪和佣金计算得出:
annual_ income = salary*12 +(commission_pct*salary*12)
GET_ANNUAL_COMPN 函数应该接受一个参数——员工 ID,并使用针对 er.employees tbl 的适当查询来计算该员工的年收入。我想在select语句中使用上面的公式得到年薪
我已经创建了函数 - (正确吗?)
CREATE FUNCTION GET_ANNUAL_INCOME (iEmpId IN INT)
RETURN FLOAT
IS annual_income FLOAT;
BEGIN
SELECT salary *12 +(commission_pct*salary*12)
INTO annual_income
FROM Employee
WHERE EmpId = iEmpId;
RETURN(annual_income);
END;
问题的第二部分是我想弄清楚的。有没有人可以帮助我或指导我。
【问题讨论】:
-
运行函数时会发生什么?您可以编辑您的问题以添加此信息。
-
尝试命名参数empid,并在SQL中加上函数名作为前缀,所以“WHERE EmpId = get_annual_income.EmpId”。您不会因为所有/部分参数都以字母为前缀而带来不便。
-
查询本身是否给出了正确的结果?顺便说一句,PL/SQL 中的
float只是一个synonym fornumber,所以你不妨使用number;并且您不需要围绕return表达式的括号(它们只会被编译器忽略),或者就此而言,大写字母。虽然我在吹毛求疵,但对齐是一种有用的技术,通常用于指示代码的依赖结构。