接受计数语句或忽略它 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);
我是 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);