我已经创建了一个存储过程来搜索员工姓名,但是我希望它是开放式的,以便用户可以插入名字或姓氏,或者根本没有名字......只是想知道如何为此构建逻辑
基本上就像下面的内容..我希望它跳过检查名称,如果它是空的。下面的线应该工作吗?或者我搞砸了。感谢。
search_employe(name, type)
SELECT * FROM employee_table e
WHERE e.type = type
AND IF name is not null THEN e.FNAME = name OR e.LName = name END IF
AND {...}
答案 0 :(得分:1)
选择不需要任何plsql,但原始帖子谈到'插入',所以可能需要一些澄清 - 你的意思是,传递参数?
SELECT * FROM employee_table e
WHERE e.type = type
AND (name is null OR e.FNAME = name OR e.LName = name)
我认为拥有一个存储过程,调用者传递一个名称要匹配,但是你也要返回任何没有注册名字的员工,并认为匹配是非常有意义/非常混乱的。 。如果你真的想要返回这些令人困惑的数据(QA将有一个实地日),那么就可以完成:
SELECT * FROM employee_table e
WHERE e.type = type
AND
(
-- matching names, or the value was passed in null
(name is null OR e.FNAME = name OR e.LName = name)
OR
-- value passed in, but the employee has no registered name
(name is not null AND e.FNAME is null AND e.LName is null)
)
但我真的建议这可以追溯到绘图板,以了解数据的要求和完整性。