【发布时间】:2018-10-18 23:19:34
【问题描述】:
这是我的 PLSQL 函数:
Create or Replace FUNCTION getEmpSalary(p_name in VARCHAR)
Return NUMBER IS
l_return_salary;
l_salary;
table_salary NUMBER;
BEGIN
Select salary into table_salary from AlphaCoEmp where p_name = p_name;
return l_return_salary;
END;
/
show errors;
我已经建立了一个包含以下元组的表:
NAME TITLE SALARY
------------------------- --------------------
Wong 91296
Utech 82058
Vega 86858
Weiser 79771
我正在尝试编写一个 PLSQL 函数来返回作为参数传递的名称的薪水。
这就是我作为参数传递的方式:注意:param1 是选择的名称。
exec setEmpSalary(Utech);
我收到以下错误:
ERROR at line 1:
ORA-06550: line 1, column 20:
PLS-00201: identifier 'UTECH' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我不确定这个错误是如何产生的,并且可以使用一些帮助来修复错误。感谢您的宝贵时间。
【问题讨论】:
-
那
CREATE FUNCTION不会编译,你声明的变量没有类型(l_return_salary和l_salary)。这是实际的代码吗?我不这么认为。然后你想在你的调用中传递一个字符串文字,所以你必须用单引号将它括起来。EXEC用于执行过程而不是函数。而且您拼错了名称(setvsget)。试试SELECT getEmpSalary('UTECH') FROM dual;。但我想它不会给你任何东西,因为=通常区分大小写(“UTECH”与“Utech”)。如果您想要不区分大小写的匹配,请在=的两侧使用upper()(或lower())。
标签: sql plsql sql-function