检查 PL/SQL 块中的表中是否存在行的正确方法

2023-12-28

昨天我在写一些任务,突然发现我真的不知道正确且被接受的方式当我使用 PL/SQL 时检查表中是否存在行。

例如,让我们使用表:

PERSON (ID, Name); 

显然我can't do(除非有一些秘密方法)比如:

BEGIN 
  IF EXISTS SELECT id FROM person WHERE ID = 10; 
    -- do things when exists
  ELSE
    -- do things when doesn't exist
  END IF;
END;

所以我解决这个问题的标准方法是:

DECLARE
  tmp NUMBER;
BEGIN 
  SELECT id INTO tmp FROM person WHERE id = 10; 
  --do things when record exists
EXCEPTION
  WHEN no_data_found THEN
  --do things when record doesn't exist
END; 

但是我不知道这是否是公认的做法,或者是否有更好的检查方法,如果有人可以与我分享他们的智慧,我将非常感激。


我不会将常规代码推入异常块中。只需检查是否存在满足您条件的行,然后从那里继续:

declare
  any_rows_found number;
begin
  select count(*)
  into   any_rows_found
  from   my_table
  where  rownum = 1 and
         ... other conditions ...

  if any_rows_found = 1 then
    ...
  else
    ...
  end if;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 PL/SQL 块中的表中是否存在行的正确方法 的相关文章

  • xQuery LIKE 运算符?

    有没有办法以与 SQL 相同的方式使用 XQuery 执行 LIKE 操作 我不想构造一些 startswith endswith 和 contains 表达式 我想要实现的目标的示例 for x in user where x first
  • oracle lag 函数与 group by

    我有一个查询忽略从前一个值增加的值 例如 采用下表 col1 col2 col3 5 1 A 4 2 A 6 3 A 9 4 B 8 5 B 10 6 B 现在进行以下查询 select col1 from select col1 lag
  • oracle to_date 转换显示文字与字符串格式不匹配

    如果我使用 unixtime 转换器 我会得到 2005 年 5 月 31 日星期二 16 23 17 GMT 1117556597 如果我运行以下查询 则会收到错误 文字与字符串格式不匹配 这是为什么 select to date 111
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • 版本控制存储过程/PLSQL?

    有没有一种有效的方法来对用 PL SQL 编写的存储过程进行版本控制 我只提到 PL SQL 因为可能存在特定的工具 任何针对存储过程版本控制的答案都是理想的 在我目前的工作中 团队现在使用以下方法对PL SQL进行版本控制 编译PL SQ
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • Oracle PL/SQL 将行类型作为构造函数参数传递

    是否可以将 table rowtype 作为构造函数中的参数传递 我有这样的东西 这有效 CREATE OR REPLACE TYPE shape AS OBJECT name VARCHAR2 30 area NUMBER CONSTRU
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • 将十六进制转换为字符串

    我想用HEXTORAW 从 ASCII 十六进制代码 30 获取 char 值 ASCII HEX 30 应返回 varchar 0 该怎么做呢 是HEXTORAW 正确的功能 你可以使用utl raw http docs oracle c
  • SQLite 中的累积求和值

    我正在尝试在 SQLite 中执行值的累积和 我最初只需要对一列求和并获得代码 SELECT t MyColumn SELECT Sum r KeyColumn1 FROM MyTable as r WHERE r Date lt t Da
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • 无法连接 ORA-12514: TNS: 侦听器当前不知道连接描述符中请求的服务

    我想将 PLSQL 开发工具连接到数据库 但由于以下错误而无法连接 ORA 12514 TNS 侦听器当前不知道连接描述符中请求的服务 检查下面的配置 如何配置才能使其正常工作 SQL gt select value from v para
  • Oracle SQL——从字符串中删除部分重复项

    我有一个表 其中有一列包含字符串 如下所示 static text here 1abcdefg1abcdefgpxq 从这个字符串1abcdefg重复两次 所以我想删除该部分字符串 然后返回 static text here 1abcdef
  • SQL 更新数据集中的位置

    id1 id2 bool 1 1 F 1 2 F 2 1 F UPDATE table name SET bool T WHERE id1 id2 IN 1 1 2 1 Need work here 所以基本上我想选择条件为 id1 id2
  • Python SQLite3 SQL注入漏洞代码

    我知道下面的代码片段由于 format 的原因很容易受到 SQL 注入的攻击 但我不知道为什么 有谁明白为什么这段代码容易受到攻击以及我从哪里开始修复它 我知道这些代码片段使输入字段保持打开状态 以便通过 SQL 注入执行其他恶意命令 但不
  • 使用另一个表中的数据查找并替换 MySQL 中的字符串

    我有两个 MySQL 表 我想使用另一个表中的数据查找和替换一个表中的文本字符串 Table texts messages thx guys i think u r great thx again u rock Table dictiona

随机推荐

  • 如何在python中使用opencv复制图像区域?

    我正在尝试使用以下想法来实现车牌识别软件http iamabhik wordpress com category opencv http iamabhik wordpress com category opencv 我使用 python 中
  • Zxing的System.Drawing.Bitmap中可能存在内存泄漏

    我目前正在使用 Monotouch 我有一个打开相机的应用程序 然后需要处理当前正在捕获的图像 我使用的代码非常类似于https github com reinforce lab com ReinforceLab MonoTouch Con
  • 卷曲命令无返回

    我正在使用 api 在此处找到的文档中 http api simpllicate nl http api simplicate nl 有一个示例卷曲 curl H Authentication Key API Key H Authentic
  • 具有 kestrel 和反向代理的 Service Fabric https 端点

    我一直在尝试按照我能找到的微软文档和各种帖子 博客上的说明在无状态 API 端点上设置 Https 它在本地运行良好 但在将其部署到我的开发服务器上后 我正在努力使其工作 Browser HTTP ERROR 504 Vm event vi
  • 如何防止表格缩小到视口中

    我有以下代码 table border collapse collapse td padding 0px border 1px solid d3d3d3 width 300px height 100px text align center
  • Android导航组件清空堆栈

    我已导航至对话框片段 from 抽屉式导航连接到 NavController 但是 当我导航到已设置 popUpTo 和包含对话框片段的另一个目的地时 它不会清除堆栈 如何清除堆栈 AM 从 LogoutDialog 调用此方法 findN
  • 如何在 Android 中显示启动屏幕?

    我想在我的应用程序加载时显示启动屏幕 这是我的Java code ImageView splash ImageView this findViewById R id splashscreen splash postDelayed new R
  • Chrome - 注册表中的证书设置

    对于 Webdrivertest 我使用 Chrome 但始终会查询一个 SSL 证书 使用 Google Chrome 设置 无法处理它 所以我读到有一种关于注册表的方法 所以我尝试了各种组合 HKEY LOCAL MACHINE Sof
  • 如何将数据框中的每一列重新调整为 0-100 范围? (在 r 中)

    我试图让我的数据框的所有列都具有相同的比例 现在我有这样的东西 其中 a 处于 0 1 等级 b 处于 100 等级而 c 处于 1 5 等级 a b c 0 89 4 1 93 3 0 88 5 我怎样才能把它达到这样的100级 a b
  • 颤振设计曲线布局作为单个小部件

    Here https stackoverflow com questions 56820631 flutter design curves layout解决了有关设计此布局的问题 我在使用它时遇到问题 因为屏幕右侧的这条曲线不是小部件 当我
  • 错误“Junit 测试中没有公共 TestCase(String name) 或 TestCase()

    我是 junit test android 的初学者 我正在跟进本教程 http developer android com training activity testing activity basic testing html但得到这
  • 从 HTML5 文件 Api 加载的图像中检索 EXIF 图像元数据?

    我正在使用 HTML5文件 API 和文件读取器 http html5demos com file api HTML div div JS
  • 重复的 Apple APNS 推送通知?

    我们在应用程序上使用 APNS 一段时间以来没有发生太多事件 突然我们的用户报告多次收到相同的推送通知 我已经确认 乏味地 我们的服务器只向 Apple 发送一次通知有效负载 但通知会在横幅和通知中心生成 2 个 有时是 3 个 相同的警报
  • react-native-image-picker - 重建后的持久存储

    我已经在屏幕上敲击了一段时间了 尽管我在 git 或 stackoverflow 上找到了所有信息 但还是无法让它工作 我想要实现的目标 所选图像的持久性 来自库或相机 当我重建我的应用程序时 这意味着当我运行时也持久化react nati
  • IOS静态库产品一直是红色的

    我已经为此苦苦挣扎了几天 当我在 XCode 4 中的 IOS 下创建一个新的静态库项目时 我遇到了一个问题 无论是否添加文件作为标头或进行编译 我都能够成功构建 但 a 文件始终为红色 这种情况在调试和发布中都会发生 我读过类似的问题 但
  • Vue js 组合两个组件中的元素

    我正在尝试构建电子商务类型应用程序的结帐页面 在结账时 我有一个来自数据库的订单项目列表 每个订单项目都有价格 数量 您可以选择并组合这些 此外 我必须在其他地方呈现一个包含 插件 的列表到您的购物篮中 这也是 OrderItems 相同的
  • 如何在 Java 中实现抽象静态方法?

    关于无法包含静态抽象 Java 方法存在许多问题 还有很多关于此问题的解决方法 设计缺陷 设计强度 但我找不到任何针对我将很快说明的具体问题的信息 在我看来 创建 Java 的人以及相当多使用 Java 的人并不像我和其他许多人那样将静态方
  • Django DateTimeField() 和 timezone.now()

    好的 当我运行功能测试时出现奇怪的时区问题 Django 1 4 Python 2 7 MySQL 上的 DateTimeField 中的毫秒是否被截断 这是我唯一的理论 模型文件 from django db import models
  • 如何在android中使用opencv从另一帧中减去一帧

    我正在处理视频的帧 我想从其他帧中减去一帧以找出差异 但我不知道如何继续 我尝试将位图帧转换为垫子 然后减去它们 但它不起作用 我正在使用 opencv 2 4 3 作为 mat 函数 谁能告诉我该怎么做 如果可能的话用代码片段进行解释 我
  • 检查 PL/SQL 块中的表中是否存在行的正确方法

    昨天我在写一些任务 突然发现我真的不知道正确且被接受的方式当我使用 PL SQL 时检查表中是否存在行 例如 让我们使用表 PERSON ID Name 显然我can t do 除非有一些秘密方法 比如 BEGIN IF EXISTS SE