gpt4 book ai didi

oracle - 如何检查记录是否为空

转载 作者:行者123 更新时间:2023-12-04 02:07:26 25 4
gpt4 key购买 nike

我有一个接收记录作为 IN 参数的过程(该过程也有一个 OUT 参数。)

CREATE OR REPLACE PACKAGE p
PROCEDURE p_select( p_filter_params IN t_filter_params
, p_order_list OUT SYS_REFCURSOR);
END p;

CREATE OR REPLACE PACKAGE BODY p
PROCEDURE p_select( p_filter_params IN t_filter_params
, p_order_list OUT SYS_REFCURSOR) AS
BEGIN
IF p_filter_params IS NULL
THEN
NULL;
END IF;
END p_select,
END p;

可执行部分

DECLARE
TYPE t_filter_params IS RECORD
( f_name customers.cust_first_name%TYPE
, l_name customers.cust_last_name%TYPE
, city customers.cust_address.city%TYPE
, from_date orders.order_date%TYPE
, to_date orders.order_date%TYPE);

vr_params t_filter_params;

TYPE ref_cursor IS REF CURSOR;

v_cursor ref_cursor;

BEGIN
/*vr_params.f_name := 'john';
vr_params.l_name := 'smith';
vr_params.city := 'Dallas';
vr_params.from_date := SYSDATE - 100;
vr_params.to_date := SYSDATE;*/

--p.p_select(vr_params, v_cursor);
p.p_select(null, v_cursor);
end;

有人能告诉我如何使过程中的 IF 语句起作用吗?

非常感谢,米库图。

最佳答案

记录在某种程度上是特别的。如果将记录设置为 null,则所有记录属性都设置为 null,但记录本身仍然存在。

我首先想到的是检查记录中的某种 id 是否为空 - 这意味着记录为空。

您没有 id,但这可能会导致另一种解决方案:添加另一个属性,该属性在未填充时为 null。

第三种方法:遍历每个属性并检查每个属性是否为空

最后,最好的是,拒绝使用 RECORD 并改用 OBJECT:它的工作方式完全符合您的预期。

关于oracle - 如何检查记录是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com