我有几个名字,如:
john arnold
edward albert
我有一个这样的名字词典:
name
---------------------------
john
arnold
edward
我写了一个函数来将名称分成几部分,并将每个部分与字典进行比较(因此edward与字典进行比较,然后albert将与字典进行比较)。
我的问题是我想返回字典中不存在的所有名称的连接字符串,例如,如果名称到达如下:
john albert adam gerard
它应该返回:
adam gerard
我把这些名字放在一个数组中并像这样搜索它们:
select name into name_base from usr_pre_pub.nd where name=names(ix);
但是当在字典上找不到名称时,执行会暂停,并且不会继续分析数组中的以下名称。
john (found) albert(found) adam (not found, exception no data found) gerard (not analysed)
我删除了捕获部分功能的异常:
exception
when no_data_found then
return ix;
when others then
return 'others';
-- consider logging the error and then re-raise
raise;
但是它会停止并且不会返回值。
我不知道从哪里开始,希望你能帮助我解决这个问题。
答案 0 :(得分:2)
看起来你没有在循环中捕获异常。假设你有一个循环迭代遍历数组中的每个名称,你的循环应该看起来像这样。
LOOP
BEGIN
SELECT name
INTO name_base
FROM usr_pre_pub.nd
WHERE name = names (ix);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
--store the name in variable/array for returning, as not found
WHEN OTHERS
THEN
--do something else
END;
END LOOP;