【发布时间】:2021-06-04 18:12:11
【问题描述】:
如果列至少有一个值为 null 或没有找到任何外键列值的数据,如何返回 TRUE?
尝试在互联网上搜索答案,但找不到任何与此组合相关的答案。因此将其发布在这里。
下面是数据: 表名 - MY_EMP
+----+------------+-----------+---------------------------+--------+
| id | first_name | last_name | email | fk_col |
+----+------------+-----------+---------------------------+--------+
| 1 | Hurleigh | Stove | | 1 |
| 2 | Joline | | | 1 |
| 3 | Martynne | Honatsch | mhonatsch2@infoseek.co.jp | 2 |
| 4 | Willyt | Fullylove | wfullylove3@hhs.gov | 2 |
| 5 | Joelly | | jferriday4@twitpic.com | 3 |
+----+------------+-----------+---------------------------+--------+
- 如果任何 fk_col 的 last_name 为 null 或 email 为 null,则返回 true
- 如果 last_name 为 null 或 email 为 null 且 fk_col 无效,则返回 true
- 否则返回 False
尝试编写函数并正在测试代码。这是进入函数的代码:
DECLARE
v_verify NUMBER(2);
BEGIN
SELECT DISTINCT 1
INTO v_verify
FROM my_emp
WHERE ( last_name IS NULL
OR email IS NULL )
AND fk_col = :custom_fk;
dbms_output.Put_line('Return True');
EXCEPTION
WHEN no_data_found THEN
dbms_output.Put_line('Return False');
END;
当参数 :custom_fk = 1 则值返回 TRUE(正确)
当参数 :custom_fk = 2 时,值返回 FALSE(正确)
当参数 :custom_fk = 700 时,值返回 FALSE(根据我的要求不正确)——在这里我希望值返回 true,但无法弄清楚如何调整代码以符合我的要求。
希望我能在这里得到一些帮助。
下面是创建表和插入数据的代码:
/* CREATE TABLE */
CREATE TABLE MY_EMP(
id NUMBER(5) NOT NULL,
first_name VARCHAR2(100) NOT NULL,
last_name VARCHAR2(100),
email VARCHAR2(100),
fk_col NUMBER(5),
CONSTRAINT "MY_EMP_PK" PRIMARY KEY ("ID")
);
/*Insert data*/
INSERT INTO my_emp(id, first_name, last_name, email, fk_col)
VALUES(1, 'Hurleigh', 'Stove', '', 1);
INSERT INTO my_emp(id, first_name, last_name, email, fk_col)
VALUES(2, 'Joline', '', '', 1);
INSERT INTO my_emp(id, first_name, last_name, email, fk_col)
VALUES(3, 'Martynne', 'Honatsch', 'mhonatsch2@infoseek.co.jp', 2);
INSERT INTO my_emp(id, first_name, last_name, email, fk_col)
VALUES(4, 'Willyt', 'Fullylove', 'wfullylove3@hhs.gov', 2);
INSERT INTO my_emp(id, first_name, last_name, email, fk_col)
VALUES(5, 'Joelly', '', 'jferriday4@twitpic.com', 3);
谢谢,
里查
【问题讨论】: