接受计数语句或忽略它 PLSQL

To take in count a statement or to ignore it PLSQL

我是 SQL 的新人,所以,分配给我的任务是在 oracle pl/sql 中开发存储过程,但现在由于下一个问题我停止了。

是否可以忽略或考虑 INNER JOIN?我的意思是,我必须在 SP 中接收 2 个参数,它们都可以有值或只有其中一个,根据该验证得出内部连接是否必要,到目前为止我有下一个代码。

CREATE TABLE1 (
    FI_ID NUMBER NOT NULL,
    FC_NAME VARCHAR2(30),
    FD_REGISTERED DATE,
    **FI_ID_TRAN_TYPE NUMBER**
);

CREATE TABLE2 (
    FI_ID_TRAN_TYPE INTEGER NOT NULL,
    FC_NAME VARCHAR2(30)
);

CREATE OR REPLACE PROCEDURE SP_SEL_INFO (
  PI_FI_ID_TRAN NUMBER NOT NULL,
  PI_DATE IN DATE,
  PO_CUR OUT SYS_REFCURSOR
)
AS
BEGIN
    OPEN PO_CUR_RESULTS FOR
    SELECT T1.FI_ID,
      T1.FC_NAME,
      T1.FD_REGISTERED
    FROM TABLE1 T1;
END;

Using the SP, From TABLE1 I need to get FI_ID, FC_NAME and FD_REGISTERED, 但条件是下一个,如果PI_FI_ID_TRAN不是null 和 PI_DATE 为 null,我只需要从 TABLE1 中检索数据,但如果两个值(PI_FI_ID_TRAN 和 PI_DATE)都不为 null,那么我必须使用 INNER JOIN 来TABLE2 使用 FI_ID_TRAN_TYPE 字段。这可能吗?

如果我没理解错的话,下面的内容可能会有所帮助:

open po_cur_results for
  select 
    t1.fi_id,
    t1.fc_name,
    t1.fd_registered
  from table1 t1 join table2 t2 on t1.fi_id_tran_type = t2.fi_id_tran_type
  where (t1.fi_id         = pi_fi_id_tran or pi_fi_id_tran is null)
    and (t1.fd_registered = pi_date       or pi_date is null);