检查行是否被选中 PLSQL
Check if rows were selected PLSQL
好吧,我有一个程序,我将两个员工的薪水相加。我用员工的 id 得到工资。如果找不到员工,我应该将工资设置为 0。这是我的代码
PROCEDURE private_salaries(
sal_res OUT NUMBER,
emp_1 NUMBER,
emp_2 NUMBER)
IS
sal_1 NUMBER;
sal_2 NUMBER;
BEGIN
SELECT salary INTO sal_1 FROM employees WHERE employee_id = emp_1;
SELECT salary INTO sal_2 FROM employees WHERE employee_id = emp_2;
END;
程序可以简化如下,
create or replace PROCEDURE private_salaries(
emp_1 NUMBER,
emp_2 NUMBER,
sal_res out NUMBER)
is
begin
select sal1 + sal2 into sal_res
from
(
select
nvl((SELECT salary FROM employees WHERE employee_id = emp_1),0) sal1,
nvl((SELECT salary FROM employees WHERE employee_id = emp_2),0) sal2
from dual);
end;
测试用例:
- 当两者都存在时 - Returns工资总和
- 当两者都不存在时 - Returns 存在者的工资
- 当 none 个存在时 - Returns 零。
建议 - 使用函数而不是过程,您可以在 SQL 中使用它们,但是对于过程需要一个 PL/SQL 块。
好吧,我有一个程序,我将两个员工的薪水相加。我用员工的 id 得到工资。如果找不到员工,我应该将工资设置为 0。这是我的代码
PROCEDURE private_salaries(
sal_res OUT NUMBER,
emp_1 NUMBER,
emp_2 NUMBER)
IS
sal_1 NUMBER;
sal_2 NUMBER;
BEGIN
SELECT salary INTO sal_1 FROM employees WHERE employee_id = emp_1;
SELECT salary INTO sal_2 FROM employees WHERE employee_id = emp_2;
END;
程序可以简化如下,
create or replace PROCEDURE private_salaries(
emp_1 NUMBER,
emp_2 NUMBER,
sal_res out NUMBER)
is
begin
select sal1 + sal2 into sal_res
from
(
select
nvl((SELECT salary FROM employees WHERE employee_id = emp_1),0) sal1,
nvl((SELECT salary FROM employees WHERE employee_id = emp_2),0) sal2
from dual);
end;
测试用例:
- 当两者都存在时 - Returns工资总和
- 当两者都不存在时 - Returns 存在者的工资
- 当 none 个存在时 - Returns 零。
建议 - 使用函数而不是过程,您可以在 SQL 中使用它们,但是对于过程需要一个 PL/SQL 块。