以下脚本用于为表类型的表创建和添加值。 如何在此表中使用EXISTS方法来确定单元格中是否存在值?
DECLARE
TYPE RecType IS RECORD
(
value1 NUMBER,
value2 NUMBER,
value3 NUMBER
);
TYPE TblType IS TABLE OF RecType INDEX BY PLS_INTEGER;
TYPE TblOfTblType IS TABLE OF TblType INDEX BY PLS_INTEGER;
matrix TblOfTblType;
BEGIN
/*Writing the data*/
FOR i IN 4 .. 6 LOOP
FOR j IN 1 .. 3 LOOP
matrix (i) (j).value1 := i * j;
matrix (i) (j).value2 := i + j;
matrix (i) (j).value3 := i - j;
END LOOP;
END LOOP;
END;
答案 0 :(得分:2)
您需要首先检查该行是否存在,然后才检查该行中是否存在该列(或者x是y,还是i,然后是j,或者您想要识别一个单元格)。
例如,要检查示例中是否存在单元格(1,2):
if matrix.exists(1) and matrix(1).exists(2) then
dbms_output.put_line('Yes');
else
dbms_output.put_line('No');
end if;
输出'否'。
并检查是否存在单元格(6,3):
if matrix.exists(6) and matrix(6).exists(3) then
dbms_output.put_line('Yes');
else
dbms_output.put_line('No');
end if;
输出'是'。
请注意,这是两个步骤;如果matrix.exists(1)
为假,则您不会尝试查找matrix(1).exists(2)
。如果你没有进行第一次检查,只做了:
if matrix(1).exists(2) then
dbms_output.put_line('Yes');
else
dbms_output.put_line('No');
end if;
您获得ORA-01403: no data found
个例外。