我的桌面客户有两个字段名称和工资。我需要做一个功能 将name作为参数并返回匹配的salary表格customers表
CREATE TABLE customers
(
customer_name varchar2(50),
customer_salary number;
);
CREATE FUNCTION customer (c_name IN customers.customer_name%type)
RETURN number; /*return value type*/
IS
sal customers.customer_salary%type;
BEGIN /*Begin*/
SELECT customer_salary into sal
FROM customers
WHERE (c_name = sal);
RETURN sal;
END /*End*/
我这样做但我找不到解决方案!
答案 0 :(得分:1)
您正在尝试将客户名称与薪水进行比较。您要做的是将传递的参数c_name与表格中的客户名称字段进行比较
CREATE FUNCTION customer (c_name IN customers.customer_name%type)
RETURN number; /*return value type*/
IS
sal customers.customer_salary%type;
BEGIN /*Begin*/
SELECT customer_salary into sal
FROM customers
WHERE (customer_name=c_name);
RETURN sal;
END /*End*/
答案 1 :(得分:0)
不幸的是,您尝试做的事情很可能在任何现实生活中都会失败,而失败与SQL或任何其他代码或技术相关的事情无关。名称不是唯一的。如果你传递像史密斯这样的参数怎么办?或者詹姆斯史密斯' (在英语国家)你有十个或一千个同名的顾客?该函数将抛出一个错误,并显示一条消息"返回的行数太多。"
如果出于任何原因需要,您可以返回具有相同名称的所有客户的列表(表格 - 如果需要,已分类),以及每个客户的薪水。你可以在SQL中很容易地做到这一点(不需要函数)。
有趣的业务,客户有薪水;我想成为您业务的客户! : - )