【发布时间】:2018-12-10 22:33:46
【问题描述】:
我有两个表 Table1 和 dTable2 具有相同的列。我需要检查一个特定的 id 是否在其中一个中,并从任何一个表中返回该行数据。 我有以下 PL/SQL 代码:
v_result Table1%ROWTYPE;
BEGIN
SELECT a.*
INTO v_result
FROM Table1 a
WHERE a.id = 123;
EXCEPTION
WHEN NO_DATA_FOUND THEN -- when record not found
SELECT b.*
INTO v_result
FROM Table2 b
WHERE b.id = 123;
END;
问题是没有抛出异常,所以 v_result 不返回任何数据。如何检查 v_result 的行数?
对于游标,我可以使用 ROWCOUNT 但 v_result 不是游标。
我也尝试过使用 count 属性,但它出错了。
我将代码更改为:
v_result Table1%ROWTYPE;
BEGIN
SELECT a.*
INTO v_result
FROM Table1 a
WHERE a.id = 123;
if v_result.count =0 then
SELECT b.*
INTO v_result
FROM Table2 b
WHERE b.id = 123;
end if;
EXCEPTION
WHEN NO_DATA_FOUND THEN -- when record not found
SELECT b.*
INTO v_result
FROM Table2 b
WHERE b.id = 123;
END;
得到一个错误component 'count' must be declared
我做错了什么?
【问题讨论】:
-
这样的变量只能存储一行。
-
那么如果没有抛出异常,我如何才能确定是否没有返回任何内容?
-
请检查我的答案,如果它对你有用,请接受/投票,这样它也可以帮助其他人寻求答案。请阅读:stackoverflow.com/help/someone-answers