PL/SQL select into - 如果数据存在

2024-05-06

仅当存在数据时,我才需要选择局部变量。

SELECT column1 INTO local_variable FROM table1 where column2 = <condition>;

在这里,如果没有与条件匹配的数据,我会收到“找不到数据”错误。

仅当有一些数据与条件匹配时,我才需要选择局部变量。有没有一个简单的查询可以解决我的问题。


也许最好的方法是处理 no_data_found

begin
  SELECT column1 INTO local_variable 
  FROM table1 where column2 = p_val;
exception
  when no_data_found then
    local_variable := null;
end;

另外,如果您使用主键/唯一键(即column2是唯一的)进行选择,那么您可以使用一个技巧

SELECT max(column1) INTO local_variable 
  FROM table1 where column2 = p_val;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PL/SQL select into - 如果数据存在 的相关文章

  • ORA-00060: 等待资源时检测到死锁

    我有一系列脚本作为 nohup 在托管 Oracle 10g 的 AIX 服务器上并行运行 这些脚本是由其他人编写的 旨在同时执行 所有脚本都在表上执行更新 我收到错误 ORA 00060 检测到死锁 等待资源 当我用谷歌搜索这个时 我发现
  • 如果表尚不存在则创建

    我正在尝试创建一个表 如果它尚不存在 我目前正在检查它是否存在于DBA TABLES首先 如果该查询没有返回任何内容 则插入 有没有办法只签入同一条语句 这样我就不必将其分解为单独的查询 这就是我目前所拥有的 BEGIN SELECT CO
  • 具有 GIT 支持的 PL/SQL IDE

    我目前正在为我的公司开发 PL SQL 存储过程 我想使用代码修订控制系统来跟踪我和其他开发人员所做的更改 我喜欢 GIT 的所有优点 包括分布式 scm 功能 有没有支持GIT的PL SQL开发IDE 目前 我正在使用 JDevelope
  • 您能帮我在 Oracle 中编写一个过程,将数据从表假脱机到 CSV 文件吗?

    我正在编写一个过程来使用 Oracle 表中的数据创建 CSV 文件 我用了 spool filename 但错误来了 我可以用吗spool在 PL SQL 中 我认为在 Oracle 10g 11g 上有更好的方法来实现这一点 但这在 O
  • 生成开始日期和结束日期之间的日期

    我需要生成两个给定日期之间的所有日期 这是问题陈述 Input START DATE END DATE 01 FEB 16 03 FEB 16 01 FEB 16 04 FEB 16 01 FEB 16 05 FEB 16 01 FEB 1
  • PLSQL:使用合并语句时获取更新与插入的记录数

    无论我的记录如何使用 SQL ROWCOUNT 插入或更新 合并都会始终为您提供合并的记录数 但是如何找出实际插入的记录数与实际更新的记录数 我尝试了这篇文章中的选项 但这似乎不起作用 https asktom oracle com pls
  • 在PL/SQL中,以一个表作为参数,过滤它并返回它

    我正在为 PL SQL 函数而苦苦挣扎 我正在尝试编写一个函数 该函数将接受对象表 根据某些条件 我打算根据其他表测试值 过滤该表并返回过滤表 我的表类型定义如下 CREATE TYPE test obj AS OBJECT test id
  • 使用预定义的系统函数将分隔字符串(或列)转换为 Oracle 中的行

    几年前 在 Oracle 10 或 9 中 我使用了一个类似于 DBMS COL 2 VAL 的函数 这绝对不是正确的函数 此内置函数的目的是根据指定的分隔符将提供的字符串转换为行 我知道有多种方法可以将分隔字符串转换为行 但我正在寻找的是
  • 保留时间值的动态 PL/SQL 日期参数

    这可能是一个愚蠢的问题 但我找不到在动态调用的 PL SQL 过程中传递 DATE 类型的解决方案 我需要的是在被调用的过程中传递日期和时间部分 create or replace PROCEDURE DATE TIME TEST dte
  • dbms_output 语句中的单引号?

    我需要在 dbms output 语句中包含单引号 我试过这个 dbms output put line first name 这里的名字是variable 我需要在单引号内显示 它 你可以通过加倍逃脱 dbms output put li
  • 如何在 Oracle PLSQL 中将数字的小数位数扩展到最少?

    我不知道如何选择以下内容 123 gt 123 00000 123 12 gt 123 12000 123 123456 gt 123 123456 我想将小数位数扩展到例如 5 位小数 最少 如果根本没有小数位 则应该有 5 个零 小数点
  • 通过列名动态访问游标

    我可以动态访问游标的列吗 我的意思是名字 像这样的东西 declare v cursor select from emp begin FOR reg IN v cursor LOOP dbms output put line reg col
  • 通过存储过程将记录传输到目标表后,从源表中删除记录

    这是我在 user75ponic 的帮助下生成的存储过程 CREATE OR REPLACE PROCEDURE ARCHIVE DATA AS BEGIN MERGE INTO Schema2 table trg USING SELECT
  • Oracle 中的 MD5 (DBMS_OBFUSCATION_TOOLKIT.MD5)

    我正在尝试编写一个函数 从我到处收集的位中获取 MD5 哈希值 我想获得哈希的小写十六进制表示 到目前为止我有这个 CREATE OR REPLACE FUNCTION MD5 CADENA IN VARCHAR2 RETURN DBMS
  • PL/SQL 中是否有方法将文本转换/编码为 XML 兼容文本?

    我的一位同事需要将 PL SQL 方法中的文本转换为符合 XML 的文本 因为他正在通过更新文本模板来构建 Excel 电子表格 PL SQL 中是否有方法将文本转换 编码为 XML 兼容文本 好吧 如果您只想转换 XML 字符 您需要执行
  • PL/SQL:如何声明会话变量?

    如何在 PL SQL 中声明一个会话变量 该变量仅在会话期间持续存在 而无需将其存储在数据库本身中 您可以使用 用户创建的上下文 来存储会话中多个单元共享的数据 首先 创建一个上下文 CREATE CONTEXT SYS CONTEXT u
  • PLS-00103:遇到符号“;”当预期出现以下情况之一时:

    我正在尝试插入用户安全问题的答案 以用于密码重置功能 Ellucian 横幅 v8 提供了一个用于运行此 API 的 API 我对他们的 API 非常陌生 从下面的错误消息来看 我还远远没有正确运行它 任何帮助表示赞赏 我尝试在 Oracl
  • 在 sqlplus 会话中的 pl/sql 代码块中切换用户

    我有一个 pl sql 脚本 我从 sqlplus 会话中作为 sysdba 运行 在执行脚本期间 我想切换到另一个用户 以便我可以为该用户创建一些数据库链接 完成此操作后 脚本应返回 sysdba 进行一些完成 我尝试使用以下内容 BEG
  • Oracle 存储过程的全局临时表的替代方法

    我已阅读并理解 Oracle 仅使用全局临时表 这与允许 temp 表的 MS SQL 不同 我遇到的情况需要我创建数百个全局临时表 以完成我正在进行的从 MS SQL 到 Oracle 的数据库转换 我想知道除了创建必须在数据库中维护的所
  • 匹配可能存在或可能不存在的组

    我的正则表达式需要解析一个如下所示的地址 BLOOKKOKATU 20 A 773 00810 HELSINKI SUOMI 1 2 3 4 第一组 第二组和第三组将始终存在于地址中 第 4 组可能不存在 我编写了一个正则表达式来帮助我获得

随机推荐