作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数,它在打开游标之前具有三个 If/Then 语句。 If/Then 语句在打开游标之前检查有效性。
我想再添加一个 If/Then 有效性检查,但是,它比其他的要复杂一些。下面是一个示例,我已经阻止评论了我想添加的内容:
begin
if not procedure.validation_function (<variable>, <condition>=TRUE) then
return variable2;
end if;
/* if not exists
(
SELECT 'x' FROM table1
WHERE table1_id = variable1_id
AND trunc(sysdate) < trunc(table1_date + 60)
) then
return variable2;
end if; */
open cursor(<argument>);
fetch cursor into <variable>;
close cursor;
return <variable>;
end;
begin
SELECT ....
FROM ....
WHERE ....
if NO_DATA_FOUND then
return variable2;
end if;
end;
最佳答案
Exists
condition 只能在SQL 语句中使用,不能在PL/SQL 中直接使用。有几种选择:
case
用 exists
表达select
内的条件陈述:SQL> declare
2 l_exists number(1);
3 begin
4 select case
5 when exists(select 1
6 from employees
7 where department_id = 1)
8 then 1
9 else 0
10 end into l_exists
11 from dual;
12
13 if (l_exists = 1)
14 then
15 dbms_output.put_line('exists');
16 else
17 dbms_output.put_line(q'[doesn't exist]');
18 end if;
19 end;
20 /
doesn't exist
PL/SQL procedure successfully completed
rownum
保证多条记录满足匹配条件只返回一条记录):SQL> declare
2 l_exists number;
3 begin
4
5 select 1
6 into l_exists
7 from employees
8 where department_id = 100
9 and rownum = 1;
10
11 dbms_output.put_line('exists');
12
13 exception
14 when no_data_found
15 then dbms_output.put_line(q'[doesn't exist]');
16 end;
17 /
exists
PL/SQL procedure successfully completed
关于oracle - IF NOT EXISTS 在函数 PLSQL 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503408/
我是一名优秀的程序员,十分优秀!