oracle - 我想创建一个名为 VALIDATE_EMP 的函数,它接受 employeeNumber 作为参数,根据存在返回 TRUE 或 FALSE
问题描述
样本数据
create table Employees (emp_id number, emp_name varchar2(50), salary number, department_id number) ;
insert into Employees values(1,'ALex',10000,10);
insert into Employees values(2,'Duplex',20000,20);
insert into Employees values(3,'Charles',30000,30);
insert into Employees values(4,'Demon',40000,40);
代码 :
create or replace function validate_emp(empno in number)
return boolean
is lv_count number
begin
select count(employee_id) into lv_count from hr.employees where employee_id = empno;
if lv_count >1 then
return true;
else
return false;
end;
我想创建一个名为的函数,该函数VALIDATE_EMP
接受empno
作为参数,TRUE
如果指定的员工存在于表名“Employeee”中,则返回 else FALSE
。
解决方案
- 缺少分号作为局部变量声明的终止符
- 如果您连接的用户不是
hr
,请将其删除(否则,保持原样) - 列名是
emp_id
,不是employee_id
- 失踪
end if
修复后,代码编译:
SQL> CREATE OR REPLACE FUNCTION validate_emp (empno IN NUMBER)
2 RETURN BOOLEAN
3 IS
4 lv_count NUMBER;
5 BEGIN
6 SELECT COUNT (emp_id)
7 INTO lv_count
8 FROM employees
9 WHERE emp_id = empno;
10
11 IF lv_count > 1
12 THEN
13 RETURN TRUE;
14 ELSE
15 RETURN FALSE;
16 END IF;
17 END;
18 /
Function created.
SQL>
怎么称呼它?通过 PL/SQL 作为 Oracle 的 SQL 没有布尔数据类型。
SQL> set serveroutput on
SQL> declare
2 result boolean;
3 begin
4 result := validate_emp(1);
5
6 dbms_output.put_line(case when result then 'employee exists'
7 else 'employee does not exist'
8 end);
9 end;
10 /
employee does not exist
PL/SQL procedure successfully completed.
SQL>
也许你宁愿回来VARCHAR2
;那么您将模仿布尔值,但您可以在普通 SQL 中使用它:
SQL> CREATE OR REPLACE FUNCTION validate_emp (empno IN NUMBER)
2 RETURN VARCHAR2
3 IS
4 lv_count NUMBER;
5 BEGIN
6 SELECT COUNT (emp_id)
7 INTO lv_count
8 FROM employees
9 WHERE emp_id = empno;
10
11 IF lv_count > 1
12 THEN
13 RETURN 'TRUE';
14 ELSE
15 RETURN 'FALSE';
16 END IF;
17 END;
18 /
Function created.
SQL> select validate_emp(1) from dual;
VALIDATE_EMP(1)
-------------------------------------------------------------------
FALSE
SQL>
推荐阅读
- python - 类型错误:detect_vcs() 缺少 1 个必需的位置参数:运行 `devpi upload --formats bdist_wheel` 时的 'ui'
- installation - 在 CentOS7 上安装 pgadmin3
- javascript - 如何为 Word 加载项中新添加的段落分配样式
- python - ValueError: y 必须是整数数组。找到对象。尝试将数组传递为 y.astype(np.integer)
- sql - 仅具有读取权限时按 asc 顺序创建 PK
- python - 在 matplotlib imshow 上更改坐标的格式/单位
- c# - 在函数执行期间将进度条与函数中的值链接
- typescript - 键入从同一基类继承的类列表的正确方法是什么?
- linux - psql:错误:无法连接到服务器:没有这样的文件或目录
- dns - Letsencrypt 不适用于服务器/IP 1 上的域和服务器/IP 2 上的子域 *使用 A 和 AAAA 记录