oracle - Oracle APEX - 如何结合“requet = expression1”和“exisits”的服务器端条件(sql查询至少返回一行)
问题描述
我想在查询返回至少一行时调用验证(从 id = 1 的表中选择 1)以及调用请求“add_data”时
不知道在这里选择什么:
解决方案
request 的值可以通过绑定变量访问REQUEST
。要解决您的特定问题,您可以将其添加到“返回的行”类型的条件中,如下所示:
SELECT 1
FROM table
WHERE (
id = 1 AND
:REQUEST = 'add_data'
)
如果您更喜欢 pl/sql,您可以使用条件类型“PL/SQL 函数体”,代码如下:
DECLARE
l_dummy NUMBER;
BEGIN
-- quit here if request value doesn't match
IF :REQUEST != 'add_data' THEN
RETURN false;
END IF;
-- check if we have rows in table.
BEGIN
SELECT 1
INTO l_dummy
WHERE EXISTS (select 1 from table where id = 1)
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN false;
END;
RETURN true;
END;
这是更多的代码,但您会发现它更易于阅读,这可能是以后维护的一个优势。
推荐阅读
- python - Pandas 将两个表中的数据转换为第三个表。交叉引用并将唯一行转换为列
- css - CSS 边距不使用 auto 居中,但适用于 text-align
- javascript - 单个数组中对象值之间的比较
- python - Python将每日列转换为以年为索引周为列的新数据框
- python - 蟒蛇 | 你得到| 为什么我的电脑不能运行你得到的脚本?
- c# - 从 3 个列表创建一个元组列表
- angular - 使用带有粘性标题的 ui5-table Web 组件的 Angular 虚拟滚动
- java - 如何在扩展映射超类的springboot中为实体类制作构造函数
- jbpm - 运行 jBPM 7.48.0 示例应用程序时出错
- vue.js - 进入和离开类的Vue过渡不起作用