当l_num等于2并且满足某个条件时,我正在尝试更新表。条件实际上没有定义id的单个记录。
因为我使用了双重选择1。问题是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 ....
感谢名单
答案 0 :(得分:2)
难道你不能只计算表格中的匹配数量吗?
(另外,你应该真正开始使用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,因为计数将始终返回一个值(零或更多)。
希望它有所帮助...