当l_num等于2并且满足特定条件时,我正在尝试更新表。该条件实际上没有定义的id的单个记录。
为此,我使用了select 1 from dual。问题是l-test总是返回0(这意味着没有找到数据)。
任何帮助都是受欢迎的。
代码如下:
CASE l_num
WHEN 2
THEN
BEGIN
SELECT 1
INTO l_test
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM table t1, table t2
WHERE t1.id = l_id
AND t1.status = 'D'
AND t1.code = t2.code);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_test := 0;
END;
DBMS_OUTPUT.put_line (' l_test when pr l_num =2 :' || l_test);
IF l_test = 1
THEN
UPDATE ....谢谢
发布于 2011-10-13 15:04:56
你就不能数一下表中的匹配数吗?
(另外,您应该真正开始使用ANSI SQL语法,而不是旧的SQL-86)
SELECT count(1)
INTO l_test
FROM table t1
INNER JOIN table t2 USING (code)
WHERE t1.id = l_id
AND t1.status = 'D';如果计数为零,则没有匹配的ID;如果计数大于零,则存在匹配。
这也简化了您的代码,因为您不必检查NO_DATA_FOUND,因为count总是返回一个值(0或更多)。
希望这能帮上忙。
https://stackoverflow.com/questions/7739151
复制相似问题