procedure get_documents
(pi_id in varchar2,
-- Inside Outside param
pi_entry_pemit in varchar2,
po_resultSet out sys_refcursor)
is
begin
OPEN po_resultSet FOR
select typ.description,
typ.attch_type,
typ.code_sp_type,
from vtr_t_doc_atch_type_master typ,
vtr_t_doc_atch_job_mapping jmap
where typ.active = 'Y'
if(pi_entry_pemit is not null)
{
--then add this 'and' operatior condition
and jmap. inside_outside_type = pi_entry_pemit
}
那么如果传递的参数不是NULL,我该如何添加AND
运算符?
答案 0 :(得分:0)
你在谈论这样的事吗?
where typ.active = 'Y'
and ((pi_entry_pemit is not null and jmap.inside_outside_type = pi_entry_pemit)
OR (pi_entry_pemit is null))
答案 1 :(得分:0)
在过程的最开始,添加if条件以检查param是否为null。 如果为null,则使用exit函数退出程序。
EG。 如果(param为null)则退出;
答案 2 :(得分:0)
您可以在where子句中使用CASE语句来检查下面的条件
CREATE OR REPLACE PROCEDURE get_documents(
pi_id IN VARCHAR2,
pi_entry_pemit IN VARCHAR2,
po_resultSet OUT sys_refcursor)
IS
BEGIN
OPEN po_resultSet FOR
SELECT typ.description, typ.attch_type, typ.code_sp_type
FROM vtr_t_doc_atch_type_master typ, vtr_t_doc_atch_job_mapping jmap
WHERE typ.active = 'Y'
AND jmap.inside_outside_type = CASE WHEN pi_entry_pemit is null then
jmap.inside_outside_type else pi_entry_pemit;
END;