类型表空值检查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型表空值检查相关的知识,希望对你有一定的参考价值。

我在plsql块中具有以下关注类型

 TYPE table_type IS TABLE OF VARCHAR2(200);
 v_tab_1  table_type;

值初始化为

if (PROD_AMNT > INV_AMNT) then            

 v_tab_1 := table_type(PROD_AMNT, 'CURR');
......

有时上述条件将不成立,并且v_tab_1中将存在空值

v_tab_1中是否存在检查值的最佳方法?

我曾尝试过

 if not(v_tab_1.EXISTS(v_tab_1.first)) then

但是以上导致NO_DATA_FOUND异常

如何处理?

答案

将单个错误值强制为表类型?然后检查该值。

if (PROD_AMNT > INV_AMNT) then            

 v_tab_1 := table_type(PROD_AMNT, 'CURR');

else

 v_tab_1 := table_type(0, 'ERR');

end if;
另一答案

检查变量是否为null或是否初始化了容器但为空。例如:

declare
  type list_t is table of varchar2(10);
  v_list list_t;
begin
  --
  -- 1) v_list is a null variable
  --

  v_list := null;

  if false then
    v_list := list_t('foo', 'bar');
  end if;

  if v_list is not null then
    dbms_output.put_line('v_list = ' || v_list(1) || ';' || v_list(2));
  else
    dbms_output.put_line('v_list is a null variable');
  end if;

  --
  -- 2) v_list is an empty but initialized collection
  --

  v_list := list_t();

  if false then
    v_list := list_t('foo', 'bar');
  end if;

  if v_list.exists(v_list.first) then
    dbms_output.put_line('v_list = ' || v_list(1) || ';' || v_list(2));
  else
    dbms_output.put_line('v_list is an empty but initialized collection');
  end if;

end;
/
另一答案

您可以使用以下方式:

- IF CreatedCursor%NOTFOUND THEN..

Or

- IF YourField IS NOT NULL THEN..

or 

- if NVL( YourField , 'NA' ) = 'NA'...
另一答案
Declare
    Type TBL_VARCHAR Is Table Of varchar2(10);
    tblFirst tbl_varchar; 
    tblSecond tbl_varchar; 
Begin
    -- Check if tblFirst is a null variable 
    Begin 
        If tblFirst.Count >= 0 Then
           tblSecond := tblFirst;
        End If;
    Exception       
        When Others Then 
            tblSecond := new tbl_varchar();
    End;

    -- Then I use tblSecond
    DBMS_OUTPUT.PUT_LINE(tblSecond.Count);
End;

以上是关于类型表空值检查的主要内容,如果未能解决你的问题,请参考以下文章

PHP 类型判断和NULL,空值检查

怎么设置access查询中空值为0?

TypeScript 2.0开启空值的严格检查

clickhouse实践关于clickhouse对空值的处理总结

片段在 onCreateView() 中的 recyclerView 上被赋予空值

Kotlin - 如何将空值传递给片段 newInstance 方法?