【PL/SQL】处理数据

Oracle PL/SQL编程中批量数据处理Sparse Collections and SQL%BULK_EXCEPTIONS Oracle数据库PL/SQL编程中的两个重要概念,稀疏集合(Sparse Collections)和SQL%BULK_EXCEPTIONS,通常与批量数据处理相关,特别是当需要高效地处理大量数据时 阅读详情

一、在PL/SQL中查询数据

1.在PL/SQL中使用SELECT语句

·在PL/SQL代码中嵌入SELECT语句可以查询数据

·将查询出的数据保存在变量中,提供后续的输出或处理

·使用INTO子句                   

语法:

SELECT select_list

   INTO {variable_name[,vaviable_name]…| record_name}

   FROM table

 WHERE condition;

①使用标量变量接收数据

SQL> DECLARE

  2    v_ename emp.ename%type;

  3  BEGIN

  4    SELECT ename INTO v_ename FROM emp WHERE empno=7369;

  5    dbms_output.put_line('The name is: '||v_ename);

  6  END;

  7  /

The name is: SMITH

PL/SQL procedure successfully completed

 

②使用复合变量接收数据

SQL> DECLARE

  2    TYPE emp_record_type IS RECORD(

  3      ename emp.ename%TYPE,

  4      sal  emp.sal%TYPE);

  5      emp_record  emp_record_type;

  6  BEGIN

  7    SELECT ename,sal INTO emp_record FROM emp WHERE empno=7369;

  8    dbms_output.put_line('The name is:'||emp_record.ename);

  9    dbms_output.put_line('The sal is:'||emp_record.sal);

 10  END;

 11  /

The name is:SMITH

The sal is:4600

PL/SQL procedure successfully completed

 

注意事项:

①当没有返回任何数据时,会触发NO_DATA_FOUND异常

②当返回的数据位多条时,会触发TOO_MANY_ROWS异常

③WHERE子句后面的变量名不能和列名相同,否则会触发TOO_MANY_ROWS异常

 

二、在PL/SQL中使用DML语句

 

1. INSERT 插入数据

语法:

①INSERT INTO[(column [,column,…])] VALUES

(value[,value,…])

使用VALUES子句,实例:

SQL>

SQL> DECLARE

  2    v_deptno dept.deptno%TYPE;

  3    v_dname dept.dname%TYPE;

  4  BEGIN

  5    v_deptno :=92;

  6    v_dname :='DEV3';

  7    INSERT INTO dept (deptno,dname) VALUES (v_deptno,v_dname);

  8    END;

  9  /

PL/SQL procedure successfully completed

②INSERT INTO

[(column [,column,…])] SubQuery

使用子查询,实例:

SQL> DECLARE

  2    v_deptno dept.deptno%TYPE;

  3  BEGIN

  4    v_deptno :=30;

  5    INSERT INTO emp_bak

  6    SELECT * FROM emp WHERE deptno=30;

  7  END;

  8  /

PL/SQL procedure successfully completed

 

2.UPDATE 更新数据

语法:

UPDATE

  SET=[=]

[WHERE];

实例:

SQL> DECLARE

  2    v_deptno dept.deptno%TYPE :=20;

  3    v_loc dept.loc%TYPE :='BEIJING';

  4  BEGIN

  5    UPDATE dept SET loc=v_loc WHERE deptno=v_deptno;

  6  END;

  7  /

PL/SQL procedure successfully completed

 

3.删除数据

语法:

DELETE FROM [WHERE];

实例:

SQL> DECLARE

  2    v_deptno emp_bak.deptno%TYPE :=20;

  3  BEGIN

  4    DELETE FROM emp_bak WHERE deptno =v_deptno;

  5  END;

  6  /

PL/SQL procedure successfully completed

 

4.隐式游标

一次只能返回一行结果(不需要定义,默认自动建立)

隐式游标的属性:

SQL%ROWCOUNT  统计在游标中处理的记录数

SQL%FOUND      如果在游标中能找到符合条件的一条记录,结果为ture

SQL%NOTFOUND   如果在游标中能找不到符合条件的一条记录,结果为ture

SQL%ISOPEN      判断游标是否打开,在隐式游标中默认游标自动打开

 

①SQL%NOTFOUND,实例:

SQL> DECLARE

  2    v_id t1.id%TYPE;

  3  BEGIN

  4    v_id :=10;

  5    UPDATE t1 SET ID=20 WHERE ID=v_id;

  6    IF SQL%NOTFOUND THEN

  7      INSERT INTO t1(ID) VALUES(v_id);

  8      COMMIT;

  9      END IF;

 10  END;

 11  /

PL/SQL procedure successfully completed

 

SQL> select *from t1;

                                     ID NAME DSC

--------------------------------------- ---------- --------------------

                                     10           

②SQL%FOUND,实例:

SQL> DECLARE

  2    v_id t1.id%TYPE;

  3  BEGIN

  4    v_id :=10;

  5    DELETE FROM t1 WHERE ID=v_id;

  6    IF SQL%FOUND THEN

  7      dbms_output.put_line('T1 recorder is deleted!');

  8      COMMIT;

  9      END IF;

 10  END;

 11  /

T1 recorder is deleted!

PL/SQL procedure successfully completed

③SQL%ROWCOUNT,实例:

SQL> DECLARE

  2    v_id t1.id%TYPE;

  3  BEGIN

  4    v_id :=10;

  5    INSERT INTO t1(ID) VALUES(v_id);

  6    DELETE FROM t1 WHERE ID=v_id;

  7    IF SQL%FOUND THEN

  8      dbms_output.put_line('T1 recorder is deleted!');

  9      dbms_output.put_line('T1 recorder'||SQL%ROWCOUNT||'rows was deleted!');

 10      COMMIT;

 11      END IF;

 12   END;

 13  /

T1 recorder is deleted!

T1 recorder1rows was deleted!

PL/SQL procedure successfully completed

 

三、在PL/SQL中使用事务控制语句

1.使用COMMIT和ROLLBACK

SQL> DECLARE

  2    v_deptno dept.deptno%TYPE :=20;

  3  BEGIN

  4    DELETE FROM dept WHERE deptno=v_deptno;

  5    COMMIT;

  6  EXCEPTION

  7    WHEN OTHERS THEN

  8      ROLLBACK;

  9  END;

 10  /

PL/SQL procedure successfully completed

 

2.使用ROLLBACK和SAVEPOINT

SQL> BEGIN

  2    INSERT INTO dept_bak

  3    SELECT * FROM dept WHERE deptno=10;

  4    SAVEPOINT s1;

  5    INSERT INTO dept_bak

  6    SELECT *FROM dept WHERE deptno=20;

  7    SAVEPOINT s2;

  8    INSERT INTO dept_bak

  9    SELECT * FROM dept WHERE deptno=30;

 10    SAVEPOINT s3;

 11    ROLLBACK TO s2;

 12    COMMIT;

 13  END;

 14  /

PL/SQL procedure successfully completed

如何在PL/SQL中通过函数重载实现不同类型数据的处理 指的是在同一个PL/SQL块中,允许定义多个名字相同但参数不同的函数或过程。这样,当调用时,PL/SQL会根据传入的参数类型和数量,自动选择匹配的函数或过程进行执行。如果两个函数或过程名字相同,并且参数列表的类型和数量也完全相同,则会导致编译错误,这种情况下不被认为是重载,而是重复定义,这是不允许的。指的是函数或过程在执行过程中调用自身的一种编程技巧。:根据部门号和增加的金额为指定部门的员工增加工资。:为所有员工增加相同金额的工资,不区分部门。重载的核心在于函数或过程的。对8.8的10次幂的结果为。 阅读详情

相关推荐

PL/SQL Developer数据导出全攻略:从表结构到批量处理

在Oracle数据库开发与维护中,数据迁移和结构同步是核心需求。掌握高效的导出技能,不仅能提升工作效率,更能确保数据的完整性和准确性。PL/SQL Developer作为Oracle开发者的首选IDE,其内置的导出功能远比手动编写SQL语句更可靠。从基础的数据导出原理出发,通过Oracle Export工具生成二进制.dmp文件,适用于完整迁移和大数据量场景;而DDL导出功能则能生成纯净的SQL脚本,便于版本控制和环境初始化。对于灵活的数据筛选和格式转换,结合SQL窗口的查询导出功能,可以轻松将结果保存为C

weixin_32228501的博客 257

当查询时间范围小于当天时间时,当天零点之后的数据无法显示

修改查询SQL:小于等于当天23:59 <=DATEADD(second,-1,CONVERT(DATETIME, dateadd(dd,1,’"+contractmodel.strContract_time_End+"’)))

weixin_45682994的博客 614

使用SQL函数将公历日期转换为农历日期(SQL Server)

在SQL Server数据库中,我们可以使用一些SQL函数来将公历日期转换为农历日期。通过使用这些函数,我们可以实现在数据库中进行日期转换和计算的需求。本文将向您展示如何使用SQL Server来实现这一功能。首先,我们需要创建一个存储过程来计算农历日期。

DiAngular的博客 1296

PL/SQL中查询某个时间段的记录(between...and..函数,Trunc函数,To_date函数)

1.以下是用between ...and...函数 主要是用到了trunc函数和between and来查询某个时间段的记录; SELECT * FROM IFSAPP.SHOP_ORD A WHERE A.contract='PPCD' and A.EARLIEST_START_DATE between trunc(sysdate-12) and trunc(sysdate-5) Y ...

beyond911的专栏 1万+

深入理解PL/SQL包及其在数据处理中的应用

本文深入探讨了PL/SQL包的结构和功能,以及如何利用这些包处理复杂的逻辑和数据操作。通过具体代码示例和逻辑流程的解析,展示了包在封装内部逻辑、隐藏敏感数据和提高代码复用性方面的优势。文章还讨论了在数据处理过程中遇到的特殊情况以及如何调整和优化代码以应对这些情况。

weixin_42103128的博客 391

Isograph工具解析:FTA、RBD、FMECA与ETA在可靠性工程中的实战应用

可靠性工程是确保复杂系统安全稳定运行的核心学科,它通过量化方法评估和提升系统在特定条件下的无故障运行能力。其基本原理涉及对系统失效模式、概率及影响进行建模与分析,旨在将定性的工程经验转化为定量的决策依据。在工程实践中,故障树分析(FTA)和可靠性框图(RBD)是两种互为补充的关键技术:FTA采用自上而下的演绎逻辑,追溯导致顶事件发生的所有可能故障组合;RBD则采用自下而上的归纳逻辑,描述系统成功运行所需的功能结构关系。这些分析技术的工程价值在于能够提前识别设计薄弱环节,量化风险,并指导设计优化与维修策略制定

weixin_42522009的博客 317

对数据库中date类型字段进行条件查询以及sql中or和and的执行顺序

1、问题: 1、对数据库中date类型字段进行条件查询 2、sql中or和and的执行顺序 1、对数据库中date类型字段进行条件查询 <if test="forecastTime != null and forecastTime != ''"> and DATE_FORMAT(forecast_time,'%Y-%m-%d') = #{forecastTime,j...

qq_31906861的博客 2479

Palantir的Ontology:从静态知识图谱到动态业务引擎的跃迁

本文探讨了Palantir的Ontology技术如何将静态知识图谱升级为动态业务引擎。通过引入函数和行动作为核心元素,Ontology实现了业务逻辑的自动化响应与执行,显著提升物流、能源等领域的运营效率。文章详细解析了其混合存储引擎、状态监听网络等关键技术设计,并对比展示了传统架构与Ontology架构的业务价值差异。

weixin_42570296的博客 200

sql小于当前时间

时间字段名 &lt;= NOW()

qq_60547244的博客 5442

Unity透明视频播放全攻略:AVPro Video插件实战与避坑指南

在游戏开发与交互式内容创作中,视频播放是常见的多媒体需求。其核心原理在于通过解码器将压缩的视频数据流转换为连续的图像帧,再经由图形API渲染至屏幕。这项技术的价值在于能够高效地呈现动态视觉内容,广泛应用于游戏过场动画、UI特效、AR/VR虚拟展示等场景。当需求进阶到需要背景透明的视频时,技术实现复杂度显著增加,这涉及到对视频Alpha通道的编码、解码与渲染管线的特殊处理。本文聚焦于Unity引擎中实现高质量透明视频播放的工程实践,深入解析了AVPro Video这一专业插件如何解决原生VideoPlayer

weixin_30368981的博客 383

从零搭建企业级AI网关:基于LiteLLM的安全防护体系设计

本文详细介绍了如何从零搭建企业级AI网关,基于LiteLLM构建全面的安全防护体系。内容涵盖分层防御架构、敏感数据处理、合规性配置与审计追踪,以及生产环境部署策略,助力企业安全高效地集成LLM技术,确保数据安全和合规性。

qq_27496129的博客 1291

Oracle(41)如何使用PL/SQL批量处理数据?

通过使用PL/SQL的批量处理技术,可以显著提高处理大量数据的效率。用于批量提取数据,FORALL用于批量执行DML操作,而PL/SQL表则用于在内存中存储和操作数据。这些技术相结合,可以大大减少数据库与应用程序之间的上下文切换,从而提高性能。在处理非常大的数据集时,可以使用LIMIT子句分批提取数据,以避免内存溢出问题。合理使用这些技术,可以使PL/SQL程序更加高效和健壮。

qq_43012298的博客 1209

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3248

Oracle数据库之PL/SQL异常处理

Oracle数据库之PL/SQL异常处理异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的。PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料到的事件。一个健壮的程序都应该能够正确处理各种异常情况,并尽可能从中恢复。1. 异常处理异常处理是用来处理正常执行过程中未预料的事件。PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个

小明的专栏 2829

ros入门(八)---TF坐标转换

TF(TransForm),就是坐标转换,包括了位置和姿态两个方面的变换。

weixin_51157015的博客 3388

玩转大语言模型——使用华为官方MindIE-Server镜像方式部署DeepSeek模型

本文将详细介绍在国产Linux系统欧拉中使用华为官方MindIE-Server镜像方式部署DeepSeek模型。一般情况下华为昇腾800I服务器可以推理DeepSeek-R1-70B,4张300I-Duo服务器可以推理DeepSeek-R1-32B。在配置中尽量贴合官方文档,包含用到的一些其他的技术细节,便于零基础入门使用。

艾醒的博客 1289

oracle PL/SQL中变量和常量、内置数据类型以及使用,dbms_lob程序包操作lob类型数据,PL/SQL对序列的改进,控制结构,动态sql,自定义异常和异常处理

文章目录一.PL/SQL1.1 概念1.2 体系结构1.3 PL/SQL块1.3.1 定义变量和常量1.3.2 PL/SQL支持的内置数据类型 一.PL/SQL 1.1 概念 PL/SQL是过程语言和结构化查询语言(sql)结合而成的编程语言; 支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构; 可用于创建存储过程、触发器、程序包,给SQL语句的执行添加逻辑; 与oracle服务器和oracle工具紧密结合,具备可移植性、灵活性、安全性 1.2 体系结构 PL/SQL引擎驻留在oracle服

不是一枚开发 5万+

uniapp [安卓苹果App端] - 实现集成微信一键登录及授权获取用户信息全流程源码,uniApp唤起微信客户端app实现微信授权头像昵称手机号(提供移动应用/开放平台/资质认证/签名/权限申请

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,微信一键登录,uniapp项目App端实现微信登录,Uniapp实现微信授权登录,调起微信客户端授权用户信息,uniappapp端微信一键登录打开手机微信app,app端如何唤起用户本机微信应用并授权登陆,如何申请微信一键登录,uniapp实现APP微信登录流程,打开本地微信软件,接入微信登录,UniApp实现微信登录教程,获取头像昵称手机号用户数据,超详细实现微信登录功能,唤起没反应,授权失败,获取

🏆 前端领域优质创作者 1万+

(课堂笔记)PL/SQL:异常处理、数据同步、日志

PL/SQL 异常处理与数据同步要点 异常处理

木木的学习笔记 461

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Oracle数据库中,如何使用PL/SQL处理游标?

DECLARE-- 声明游标-- 变量-- 示例部门IDBEGIN-- 打开游标并传递参数-- 循环提取数据LOOP-- 处理数据END LOOP;-- 关闭游标END;通过这些方法,你可以有效地使用PL/SQL中的游标来处理复杂的查询结果集。记住,合理使用游标可以提高代码的可读性和性能。

qq_33240556的博客 785

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Oracle海量数据迁移:PL/SQL批量处理与断点续传实战

在数据库管理与应用开发中,数据迁移是常见的核心任务,尤其在处理海量表数据时,传统工具常因权限或环境限制而无法使用。PL/SQL作为Oracle数据库内置的过程化语言,提供了在数据库会话内直接操作数据的强大能力。其核心原理在于通过游标分批读取数据,结合批量操作技术,将大数据集分解为可控的小批次进行处理,从而有效控制内存与事务资源消耗。这种方案的技术价值在于实现了高度定制化的数据迁移流程,允许开发者在SQL层进行精细的数据过滤、转换与清洗,同时完全摆脱对操作系统权限和目录对象的依赖。典型的应用场景包括云数据库环

weixin_31292729的博客 341

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Oracle Class6. PL/SQL 简介(数据类型,逻辑比较,控制结构,错误处理)

------------------------2013-5-14------------------------oracle数据类型Scalar: char(n),nchar(n) varchar2(n) nvarchar2(n) date timestamp raw blob,clob nclob,bfile long,long raw rowid,urowidC...

dfsafsd32323的博客 328

JSON与PL/SQL的完美结合:金仓KES在现代数据处理中的双重优势

本文探讨了金仓KES数据库如何完美结合PL/SQL的强大计算能力与JSON的灵活性,为现代数据处理提供双重优势。文章详细解析了金仓KES对Oracle PL/SQL语法的深度兼容性,展示了原生JSON支持的高效操作,并提供了PL/SQL与JSON协同应用的最佳实践,助力企业实现结构化与半结构化数据的融合处理。

weixin_29214559的博客 288

PL/SQL的异常处理/光标/数据链路/导入导出存储过程

[b]一、PL/SQL的异常[/b] [b]1.处理异常:[/b] [code="sql"] EXCEPTION WHEN first_exception THEN … WHEN second_exception THEN … WHEN OTHERS THEN /*OTHERS异常处理器必须排在最后,它处理所有没有明确列出的异常。*/ … ...

log_cd的专栏 150

pl/sql操作数据库之异常处理((EXCEPTION))

这篇文章讲述的是pl/sql操作数据库之异常处理,如有错误或者不当之处,希望各位大神批评指正。 什么是异常处理? 异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行. 一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复 ora...

叶清逸的博客 3835
上一篇: 【PL/SQL】PL/SQL语言基础
下一篇: 【PL/SQL】 控制结构
卜塔
博客等级 码龄10年 135粉丝 318原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值