Plsql 函数计算PL/SQL中的增量
我有下面的代码,创建一个函数来计算员工的增量。函数将增量百分比和工资作为输入,并返回增量金额作为输出-Plsql 函数计算PL/SQL中的增量,plsql,Plsql,我有下面的代码,创建一个函数来计算员工的增量。函数将增量百分比和工资作为输入,并返回增量金额作为输出- create or replace function calculate_Increment(incperc number, salary number) return number is begin insert into employee(emp_id, emp_name, salary, calculate_Increment(10, salary)) values (emp_id, e
create or replace function calculate_Increment(incperc number, salary number)
return number
is
begin
insert into employee(emp_id, emp_name, salary, calculate_Increment(10, salary))
values (emp_id, emp_name, salary, v_increment_amount);
end;
/
预期产量为-
EMPID EMPNAME SALARY CALCULATE_INCREMENT(10,SALARY)
---------- ------------------------- ---------- ------------------------------
101 Ram 45000 4500
102 Sita 54000 5400
103 Gandhi 35000 3500
104 Indira 48000 4800
105 Cholan 25000 2500
但我面临一个错误-
Warning: Function created with compilation errors.
Select empid, empname, salary, calculate_Increment(10, salary) from employee
*
ERROR at line 1:
ORA-06575: Package or function CALCULATE_INCREMENT is in an invalid state
请帮我纠正这个错误。提前感谢。您编写的函数无效,原因如下:
- 它不会返回任何东西
- 您不能在内部执行DML(好的,如果它是一个自治事务,您可以,但是-让我们别管它)
本身没有意义;它应该是什么?无法插入到由函数表示的列中insert
SQL> create or replace function calculate_increment
2 (incperc in number,
3 salary in number
4 )
5 return number
6 as
7 begin
8 return salary * incperc/100;
9 end;
10 /
Function created.
SQL> select emp_id, emp_name, salary, calculate_increment(10, salary) inc
2 from employee;
EMP_ID EMP_NAME SALARY INC
---------- ---------- ---------- ----------
7782 CLARK 2450 245
7839 KING 5000 500
7934 MILLER 1300 130
SQL>
创建一个表值函数,通过提供加薪百分比,使用员工id增加员工的工资。如果提供了ID,您的职能部门必须能够增加单个员工的工资,否则如果没有提供ID,则您的职能部门应增加所有员工的工资您在哪里增加工资?为什么需要函数来插入行?要求不明确。加薪是在职能部门完成的。那么仅仅调用函数就可以得到输出?如果是,我如何调用函数?函数在哪里?你能给我看看吗?如果函数存在,只需根据需要将其与其他列一起选择即可?在回答任何问题之前,我想先了解一下这个函数是“calculate_increment”创建的。很抱歉,我完全搞糊涂了。虽然你的函数有错误,但我能告诉你什么。1.您不应该将函数用于插入目的。2.您没有返回条款3。您正在使用变量
v_increment_amount
,但没有声明它4。您当前的代码将导致递归调用,而没有任何退出条件,这将导致无限循环……简而言之,如果您可以一步一步地告诉我您真正想要什么,我可以帮助您,否则我的坏消息我不理解您。