Function Oracle 10G:ORA-06575:函数处于无效状态
我创建了这样一个函数Function Oracle 10G:ORA-06575:函数处于无效状态,function,oracle10g,Function,Oracle10g,我创建了这样一个函数 CREATE OR REPLACE FUNCTION tax (p_sal IN NUMBER(4)) RETURN NUMBER AS v_tax NUMBER(4); BEGIN v_tax:= CASE WHEN p_sal> 4000 THEN p_sal*0.33 WHEN p_sal >2500 THEN p_sal*0.25 WHEN p_sal >1500 THEN p_sal*0.2
CREATE OR REPLACE FUNCTION tax
(p_sal IN NUMBER(4))
RETURN NUMBER
AS
v_tax NUMBER(4);
BEGIN
v_tax:= CASE
WHEN p_sal> 4000 THEN
p_sal*0.33
WHEN p_sal >2500 THEN
p_sal*0.25
WHEN p_sal >1500 THEN
p_sal*0.20
ELSE 0
END;
RETURN v_tax;
END;
/
当我在insert stmt like中使用此tax函数时
INSERT INTO employees(eno, ename, job, join_date, sal, comm)
VALUES (7784,'allen','salesman',sysdate, 5000, tax(5000));
它显示了如下错误
ERROR: ORA-O6575: package or function tax is in invalid state.
有人能建议我如何使这个函数处于有效状态吗?
提前感谢。请确保编译的函数没有错误。这就是Oracle告诉您的错误:ORA-06575 使用以下语句创建函数:
CREATE OR REPLACE FUNCTION tax (p_sal IN NUMBER)
RETURN NUMBER AS
v_tax NUMBER(4);
BEGIN
v_tax:= CASE
WHEN p_sal> 4000 THEN p_sal*0.33
WHEN p_sal >2500 THEN p_sal*0.25
WHEN p_sal >1500 THEN p_sal*0.20
ELSE 0
END;
RETURN v_tax;
END;
在参数中声明编号时,不需要参数列表中的
(4)
。函数编译如下:
alter function tax compile;
然后,使用以下命令检查编译错误:
SHOW ERRORS
Oracle中的对象无效主要有两个原因:
此外,一些数据库连接驱动程序保留对数据库中对象的引用。如果这些对象在数据库中的状态发生更改,则引用将过时,您将收到与上述错误类似的错误。使用此命令检查错误:
Select * from user_errors where name='Your function name'
您可以使用SHOW error
命令检查错误
SQL> show error function Your_Function_Name;
请更仔细地编排问题的格式,避免使用所有大写标题。另外,请接受您的问题的相关答案。请参阅常见问题解答,网址为