如何解决带大小写的SQL语句
我想要一个接收薪水值和job_id的函数。此功能需要验证作为参数传递的薪水值是否在最高薪水和最低薪水之间。
CREATE FUNCTION check(revenue Number,id integer)
RETURN message
IS message varchar2;
BEGIN
select min(revenue),max(revenue) from users;
RETURN(message);
END;
解决方法
除非message
是数据类型(并且可能不是),否则无法返回它。您想要返回的是一个字符串-varcahr2
数据类型。
所以:
SQL> create or replace function f_test (salary in number)
2 return varchar2
3 is
4 l_min number;
5 l_max number;
6 begin
7 select min(sal),max(sal)
8 into l_min,l_max
9 from emp;
10
11 return case when salary between l_min and l_max then 'Between'
12 when salary > l_max then 'Above max'
13 else 'Other'
14 end;
15 end;
16 /
Function created.
SQL> select f_test(6000) result from dual;
RESULT
-------------------------------------------------------------------------------
Above max
SQL>
可以随时进行改进(添加工作,部门等)。
,通过使用解析函数,您可以创建函数而无需返回极值的局部变量:
CREATE OR REPLACE FUNCTION verifyIfSalaryIsBetweenMinAndMaxForThatJob(i_salary NUMBER,i_jobId INT)
RETURN VARCHAR2 IS
message VARCHAR2(50);
BEGIN
SELECT MAX(CASE WHEN i_salary < min_sal THEN
'Below'
WHEN i_salary > max_sal THEN
'Above Max'
WHEN i_salary BETWEEN min_sal AND max_sal THEN
'Between'
END)
INTO message
FROM
(
SELECT MIN(salary) OVER (PARTITION BY job_Id) AS min_sal,MAX(salary) OVER (PARTITION BY job_Id) AS max_sal,e.*
FROM employees e
)
WHERE job_id = i_jobId;
RETURN message;
END;
/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。