_实验6 游标与异常处理
Oracle游标使用方法及语法大全

【训练1】 用游标提取emp表中7788雇员的名称和职务。
Sql代码:
1.SET SERVEROUTPUT ON
2.DECLARE
3.v_ename VARCHAR2(10);
4.v_job VARCHAR2(10);
5.CURSOR emp_cursor IS
6.SELECT ename,job FROM emp WHERE empno=7788;
当系统使用一个隐式游标时,可以通过隐式游标的属性来了解操作的状态和结果,进而控制程序的流程。隐式游标可以使用名字SQL来访问,但要注意,通过SQL游标名总是只能访问前一个DML操作或单行SELECT操作的游标属性。所以通常在刚刚执行完操作之后,立即使用SQL游标名来访问属性。游标的属性有四种,如下所示。
游标有两种类型:显式游标和隐式游标。在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的SELECT语句。
End loop;
Close c_emp;
End;
%ROWTYPE也可以用游标名来定义,这样的话就必须要首先声明游标:
For record_name IN(corsor_name[(parameter[,parameter]…)]
|(query_difinition) loop
Statements
End loop;
下面我们用for循环重写上面的例子:
在游标FOR循环中使用查询
在游标FOR循环中可以定义查询,由于没有显式声明所以游标没有名字,记录名通过游标查询来定义。
测量误差及数据处理.

第一章测量误差及数据处理物理实验的任务不仅是定性地观察各种自然现象,更重要的是定量地测量相关物理量。
而对事物定量地描述又离不开数学方法和进行实验数据的处理。
因此,误差分析和数据处理是物理实验课的基础。
本章将从测量及误差的定义开始,逐步介绍有关误差和实验数据处理的方法和基本知识。
误差理论及数据处理是一切实验结果中不可缺少的内容,是不可分割的两部分。
误差理论是一门独立的学科。
随着科学技术事业的发展,近年来误差理论基本的概念和处理方法也有很大发展。
误差理论以数理统计和概率论为其数学基础,研究误差性质、规律及如何消除误差。
实验中的误差分析,其目的是对实验结果做出评定,最大限度的减小实验误差,或指出减小实验误差的方向,提高测量质量,提高测量结果的可信赖程度。
对低年级大学生,这部分内容难度较大,本课程尽限于介绍误差分析的初步知识,着重点放在几个重要概念及最简单情况下的误差处理方法,不进行严密的数学论证,减小学生学习的难度,有利于学好物理实验这门基础课程。
第一节测量与误差物理实验不仅要定性的观察物理现象,更重要的是找出有关物理量之间的定量关系。
因此就需要进行定量的测量,以取得物理量数据的表征。
对物理量进行测量,是物理实验中极其重要的一个组成部分。
对某些物理量的大小进行测定,实验上就是将此物理量与规定的作为标准单位的同类量或可借以导出的异类物理量进行比较,得出结论,这个比较的过程就叫做测量。
例如,物体的质量可通过与规定用千克作为标准单位的标准砝码进行比较而得出测量结果;物体运动速度的测定则必须通过与二个不同的物理量,即长度和时间的标准单位进行比较而获得。
比较的结果记录下来就叫做实验数据。
测量得到的实验数据应包含测量值的大小和单位,二者是缺一不可的。
国际上规定了七个物理量的单位为基本单位。
其它物理量的单位则是由以上基本单位按一定的计算关系式导出的。
因此,除基本单位之外的其余单位均称它们为导出单位。
如以上提到的速度以及经常遇到的力、电压、电阻等物理量的单位都是导出单位。
杨氏模量实验报告

杨氏模量的测定(伸长法)实 验 目 的1.用伸长法测定金属丝的杨氏模量2.学习光杠杆原理并掌握使用方法实 验 原 理物体在外力作用下或多或少都要发生形变,当形变不超过某一限度时,撤走外力之后形变能随之消失,这种形变叫弹性形变,发生弹性形变时物体内部将产生恢复原状的内应力。
设有一截面为S ,长度为l 的均匀棒状(或线状)材料,受拉力F 拉伸时,伸长了δ,其单位面积截面所受到的拉力S F称为胁强,而单位长度的伸长量l δ称为胁变。
根据胡克定律,在弹性形变范围内,棒状(或线状)固体胁变与它所受的胁强成正比:F E S lδ= 其比例系数E 取决于固体材料的性质,反应了材料形变和内应力之间的关系,称为杨氏弹性模量。
24FlE d πδ=(1)上图是光杠杆镜测微小长度变化量的原理图。
左侧曲尺状物为光杠杆镜,M 是反射镜,1d 为光杠杆镜短臂的杆长,2d 为光杆杆平面镜到尺的距离,当加减砝码时,b 边的另一端则随被测钢丝的伸长、缩短而下降、上升,从而改变了M 镜法线的方向,使得钢丝原长为l 时,从一个调节好的位于图右侧的望远镜看M 镜中标尺像的读数为0A ;而钢丝受力伸长后,光杠杆镜的位置变为虚线所示,此时从望远镜上看到的标尺像的读数变为i A 。
这样,钢丝的微小伸长量δ,对应光杠杆镜的角度变化量θ,而对应的光杠杆镜中标尺读数变化则为ΔA 。
由光路可逆可以得知,A ∆对光杠杆镜的张角应为θ2。
从图中用几何方法可以得出:1tg d δθθ≈=(2)2tg22Ad θθ∆≈=(3) 将(2)式和(3)式联列后得:122d A d δ=∆ (4) 所以:2218mgld E d Ad π=∆,令A K m ∆= 故:2218gld E d Kd π= 这种测量方法被称为放大法。
由于该方法具有性能稳定、精度高,而且是线性放大等优点,所以在设计各类测试仪器中有着广泛的应用。
实 验 仪 器杨氏模量仪;光杆杆;螺旋测微器;游标尺;钢卷尺和米尺;望远镜(附标尺)。
动平衡实验操作规程(3篇)

第1篇一、实验目的1. 了解动平衡的基本原理和操作方法;2. 掌握动平衡实验的操作步骤;3. 学会使用动平衡机进行动平衡实验;4. 提高对设备故障的判断和排除能力。
二、实验原理动平衡是指通过在转子上添加或去除质量块,使得转子在旋转过程中产生的离心力相互抵消,从而达到减少振动、提高旋转精度和稳定性的目的。
三、实验仪器与材料1. 动平衡机;2. 转子;3. 质量块;4. 钻头;5. 量具(游标卡尺、塞尺等);6. 记录本。
四、实验步骤1. 准备工作(1)检查动平衡机是否处于正常工作状态,如有异常情况,及时排除;(2)清洁转子、质量块和动平衡机,确保无异物;(3)根据转子重量选择合适的动平衡机。
2. 安装转子(1)将转子安装到动平衡机的转轴上,确保转子与转轴同心;(2)调整转子位置,使转子在动平衡机上平衡。
3. 参数设置(1)根据转子重量和转速,设置动平衡机的参数;(2)选择合适的平衡面数、分度方向和配重方式。
4. 动平衡实验(1)启动动平衡机,进行动平衡实验;(2)观察转子在动平衡过程中的振动情况,根据振动数据调整质量块的位置和大小;(3)重复上述步骤,直至达到动平衡要求。
5. 结果分析(1)记录动平衡实验数据,包括平衡精度、振动情况等;(2)分析动平衡实验结果,评估转子的平衡状态。
6. 实验结束(1)关闭动平衡机,卸下转子;(2)清理实验现场,回收实验器材。
五、注意事项1. 操作动平衡机时,注意安全,避免发生意外;2. 在调整质量块时,应轻柔操作,避免对转子造成损伤;3. 动平衡实验过程中,应密切观察转子的振动情况,及时调整质量块;4. 实验结束后,应及时清理实验现场,确保设备安全。
六、实验报告1. 实验目的;2. 实验原理;3. 实验仪器与材料;4. 实验步骤;5. 实验数据;6. 结果分析;7. 实验结论。
通过本次动平衡实验,使学生掌握动平衡的基本原理和操作方法,提高对设备故障的判断和排除能力。
chart04异常错误处理

emp.sal%TYPE;
异常处理
EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('数据库中没有编码为'||v_empno||'的员工'); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE('程序运行错误!请使用游标'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE||’---‘||SQLERRM); END;
1-17
异常错误传播
声明部分产生的异常: 例:BEGIN
DECLARE Abc number(3):=’abc’; 其它语句 BEGIN 其它语句 EXCEPTION WHEN OTHERS THEN 其它语句 END; EXCEPTION WHEN OTHERS THEN 其它语句 END;
1-18
1-15
异常错误传播
由于异常错误可以在声明部分和执行部分以及异常错误部分出现,因 而在不同部分引发的异常错误也不一样。 可执行部分产生的异常: 当一个异常错误在执行部分引发时,有下列情况: 1. 如果当前块对该异常错误设置了处理,则执行它并成功完成该块 的执行,然后控制转给包含块。 2.如果没有对当前块异常错误设置定义处理器,则通过在包含块中 引发它来传播异常错误。然后对该包含块执行步骤1)。
1-14
异常处理
注意: 某给定异常最多由异常处理部分的一个处理器进行处理。如果有 多个异常处理器,则PL/SQL编译器产生PLS-00483错误。 SQLCODE返回当前错误代码,SQLERRM返回当前错误的消息文本。 对于用户自定义异常SQLCODE返回值为‘1’,SQLERRM返回值为 ‘User-defined Exception’ Oracle错误信息的最大长度是512字节 SQLCODE和SQLERRM的值先赋给本地变量,不能直接用于SQL语句
大学物理实验学习指南

大学物理实验学习指南一、物理实验课程作用与任务物理学在本质上是一门实验学科。
物理规律的发现和物理理论的建立必须以实验为基础。
物理实验是大学生进校后首先接触的实践性教学环节,也是对大学生进行系统的科学实验方法和技能训练的必修课。
课程任务是:1.通过实验现象的观察、分析和测量,学习运用理论指导实验、分析解决实际问题的方法,加深对物理原理的理解。
2.培养学生从事科学实验的初步能力:(1)掌握实验基本方法和操作技能;(2)明确实验原理和设计要点;(3)学会正确使用常用仪器;(4)运用理论对实验现象作出初步分析和判断;(5)正确记录和处理实验数据,分析实验结果,撰写实验报告;(6)独立完成简单的设计性实验。
3.培养实事求是的科学态度、良好的实验习惯、严谨的工作作风、主动研究的创新探索精神。
二、物理实验课程的基本程序1.实验预习学生在课前要仔细阅读教材及有关资料,理解实验目的、原理、方法、仪器、实验条件、内容步骤、实验关键及注意事项。
做好预习报告和数据记录表格。
对设计性实验,要查阅资料,写出实验设计方案。
2.实验操作进入实验室要遵守实验室规则。
首先熟悉实验器材,全面思考实验操作程序。
仪器布置要井井有条,安全操作。
细心观察实验现象,认真分析实验中出现的问题。
仪器调节表要细致,测量数据力求准确。
爱护仪器。
仪器发生故障,可以相互讨论或询问教师,及时解决。
认真做好实验记录,不可抄袭、拼凑数据。
用钢笔或圆珠笔在数据表格中记录原始数据,记错时轻划一道并在旁边写上正确,不得乱涂乱改,也不得先记在纸上再填写到表格中。
实验完毕,不要破坏测试条件。
数据经教师签字,发现错误要重新测试。
整理好一起才能离开实验室,养成良好的实验习惯。
2.实验报告实验报告的撰写要简洁明了、工整规范、文字通顺、记载清楚、数据齐全、图表正确美观、结论明确,分析全面。
数据处理包括计算、作图、误差分析。
计算要有表达式,代入数据要有根据。
实验报告内容:实验名称;实验目的;实验原理(原理图、理论依据、主要公式、简要推导过程);实验记录(原始数据表格及记录,数据有效位数和单位,主要仪器型号、名称、规格、精度等);数据记录(对测量数据计算或作图,计算步骤,误差或不确定度分析,正确表达实验结果,数据处理表格);分析讨论(实验现象分析,关键问题的研究体会,误差来源,实验仪器选择及实验方法改进的建议,实验异常现象解释等)三、误差、不确定度、数据处理1.测量与误差的基本概念2.误差来源与分类(系统误差、随机误差、过失误差)3.随机误差的统计规律及估算4.粗大误差的剔除5.仪器误差6.有效数字定义、修约及运算规则7.测量结果的标准误差评定(直接测量结果的标准误差表达,间接测量结果表达)8.测量结果的不确定度评定(不确定度概念,直接测量结果不确定度,间接测量不确定度,扩展不确定度,物理实验不确定度简化表示及评定步骤)9.非等精度测量结果的综合评定10数据处理基本方法(列表法,图示图解法,曲线拟合与最小二乘法,逐差法)四、基本实验方法与操作技术1.基本实验方法(比较法,放大法,平衡法,补偿法,转换法,模拟法)2.测量仪器的选择与测量条件的确定3.实验设计程序:(1)明确实验任务与目的;(2)查阅资料,提出测量原理与实验方法并比较,确定最佳实验方案;(3)根据误差分配原则和测量条件选择实验器材;(4)确定实验步骤,设计数据记录表格;(5)按实验方案和步骤进行实验;(6)书写实验报告。
大学物理实验测量误差及数据处理
公选课: 专利与发明创造
知识经济
本课内容:
呼唤专利
建立专利意识 探寻创意来源 掌握申请方法
实验三环节
1. 预习
预习--操作--数据处理
(报告样本)
简述主要内容、过程及注意事项;推导相关公式; 画出流程图、线路图、光路图及装置示意图等
专栏专用,可附页
设计数据记录表(其中一份为草稿)
1 n 1 可求平均值 x x i ( x1 x2 ... xn ) n i 1 n
x 是 x i 的最佳估计值 因为多次测量的平均值接近真值,我们 就以平均值代替真值
3.3.2 平均值的实验标准差
S( x) S ( xi ) n
(x
i 1
3.5 合成不确定度 3.5.1 在A、B两类不确定度分别计算、且互不相关时, 合成不确定度Uc(x)
2 2 2 uc ( x ) s(2x ) uB s ( x) 仪 ( x)
3.5.2 我们的实验中采用合成不确定度uc(不采用扩展 不确定度U).
3.53 要完整地评价测量结果,除近真值和不确 定度的数值外还应给出其分布、有效自由度、 置信概率等参量。学生实验中暂不作要求。
大学物理实验绪论
汪仕元 1355 888 6954 821815208@
前
人类知识分两类:
自然科学分两类:
言
社会人文学 自然科学
物理学 数学
物理学分两类:
理论物理
应用物理
物理实验是物理学的基础
实验生发理论 奥斯特做电学实验时发现电流的磁效应 伽利略从单摆实验中找到了等时性
实验检验理论 比萨斜塔抛物实验检出重物快落理论之谬 迈克尔逊干涉实验否定了以太理论证实了相对论
长春理工大学大二上大物实验报告
实验1 导热系数的测量【实验目的】1、了解热传导现象的物理过程2、学习用稳态平板法测量材料的导热系数 3.学习用作图法求冷却速率4、掌握一种用热电转换方式进行温度测量的方法 【实验仪器】1、YBF-3导热系数测试仪 一台2、冰点补偿装置 一台3、测试样品(硬铝、硅橡胶、胶木板) 一组4、塞尺 一把 【实验原理】导热系数(热导率)是反映材料热性能的物理量,导热是热交换三种(导热、对流和辐射)基本形式之一,是工程热物理、材料科学、固体物理及能源、环保等各个研究领域的课题之一,要认识导热的本质和特征,需了解粒子物理而目前对导热机理的理解大多数来自固体物理的实验。
材料的导热机理在很大程度上取决于它的微观结构,热量的传递依靠原子、分子围绕平衡位置的振动以及自由电子的迁移,在金属中电子流起支配作用,在绝缘体和大部分半导体中则以晶格振动起主导作用。
因此,材料的导热系数不仅与构成材料的物质种类密切相关,而且与它的微观结构、温度、压力及杂质含量相联系。
在科学实验和工程设计中所用材料的导热系数都需要用实验的方法测定。
(粗略的估计,可从热学参数手册或教科书的数据和图表中查寻)1882年法国科学家J •傅里叶奠定了热传导理论,目前各种测量导热系数的方法都是建立在傅里叶热传导定律基础之上,从测量方法来说,可分为两大类:稳态法和动态法,本实验采用的是稳态平板法测量材料的导热系数。
为了测定材料的导热系数,首先从热导率的定义和它的物理意义入手。
热传导定律指出:如果热量是沿着Z 方向传导,那么在Z 轴上任一位置Z 0 处取一个垂直截面积ds (如图1),以dzdT表示在z 处的温度梯度,以dtdQ表示在该处的传热速率(单位时间内通过截面积ds 的热量),则传热速率与温度梯度及面积成正比,热传导定律可表示成:ds dzdTdt dQ Z 0)(λ-= (1) 1T 2Tz(图1)式中的负号表示热量从高温区向低温区传导(即热传导的方向与温度梯度的方向相反)。
plsql使用方法
plsql使用方法PL/SQL是Oracle数据库的一种编程语言,它是Procedural Language/Structured Query Language(过程性语言/结构化查询语言)的缩写。
PL/SQL的主要作用是用于开发Oracle数据库应用程序,它可以在Oracle数据库内部直接执行存储过程、函数以及触发器等。
PL/SQL的使用方法1、PL/SQL语言的基本元素:变量、常量、运算符、条件语句和循环语句。
2、PL/SQL程序的结构:声明段、执行段和异常处理段。
3、定义变量和常量:DECLAREx NUMBER := 10; --定义变量x,并初始化为10y CONSTANT NUMBER := 20; --定义常量y,并初始化为20 BEGINNULL;END;/4、条件语句:IF boolean_expression THEN--执行一系列语句ELSEIF boolean_expression THEN--执行一系列语句ELSE--执行一系列语句END IF;5、循环语句:FOR loop_index IN [REVERSE] lower_limit..upper_limit LOOP --执行一系列语句END LOOP;WHILE boolean_expression LOOP--执行一系列语句END LOOP;LOOP--执行一系列语句EXIT WHEN boolean_expression; END LOOP;6、异常处理:BEGIN--执行一系列语句EXCEPTIONWHEN exception_name1 THEN --处理异常方式1WHEN exception_name2 THEN --处理异常方式2WHEN OTHERS THEN--处理所有其他异常情况END;7、使用游标:DECLARECURSOR cursor_name ISSELECT ...FROM ...WHERE ...;local_variable datatype;BEGINOPEN cursor_name;LOOPFETCH cursor_name INTO local_variable;EXIT WHEN cursor_name%NOTFOUND;--执行一系列语句END LOOP;CLOSE cursor_name;END;8、使用存储过程和函数:CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ]ISvariable datatype;...BEGIN--执行一系列语句EXCEPTION--处理异常END;CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ]RETURN datatypeISvariable datatype;...BEGIN--执行一系列语句EXCEPTION--处理异常END;PL/SQL是Oracle数据库中非常实用的编程语言,它可以帮助我们开发高效、可靠和可重用的应用程序。
大学物理实验绪论(课堂PPT)
.
4. 实验管理系统
【学生登录账号是学号,初始密码是学号。登录后务必 修改】关于实验预约系统如何使用,可登录网站。首页, 下载“致2017级同学-新学期重要通知及资料”查看附 件四。
.
5. 要求 【非常重要】 (1)第二周的周一(3月12日)9:00-17:00,各班班长、学习委员到物理实验
.
标准差的统计意义
.
不同标准差的比较
显然σ越小,测量值的分散范围越小,测量的精密度越高。
.
分布特点
1. 单峰性
p ( 0 ) 达到最大值
p(x)
2. 对称性
p(x)= p(x)
3. 有界性
x 3
x
0
4. 抵偿性:
1 n
x n i1 xi
0
.
测量列的标准差
lim n
1n ni1(xi
x)2
A类分量:单次测量不考虑。 B类分量:仪器不确定度为 0.004mm。
5.5mm +0.16mm +0.005mm =5.665mm
正确的测量结果:(5.665±0.004)mm
.
②由仪器的准确度等级获得:(针对电学实验仪器来说)
准 确 度 等 级 量 程
X 仪 =
100
准确度等级: 0.1、0.2、0.5、1.0、1.5、2.5、5.0
真)
【实验九】 分光计的调整和三
【实验五】多用电表的使用
棱镜顶角的测定
【实验十】用牛顿环测曲率半径
B类实验
【实验十一】 导热系数的测定 【实验十二】 数字万用表的使用 【实验十三】 用双臂电桥测量低电阻(电脑仿真) 【实验十四】 用光谱仪观测原子光谱 【实验十五】 伏安特性曲线的测绘 【实验十六】 静电场的描绘 【实验十七】拉伸法测量杨氏模量
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 1 页 共 13 页 实验6 游标与异常处理 姓名: 学号: 专业: 班级: 同组人: 实验日期:
【实验目的与要求】 掌握Oracle游标的处理机制和方法 掌握异常处理方法 【实验内容与步骤】
6.1. 游标的使用: 1.隐式游标: (0)创建测试表和加入测试数据
drop table emp_Examloyees; create table emp_Examloyees( EMP_EXAMLOYEE_ID NUMBER(6) primary key, FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(25), EMAIL VARCHAR2(25), PHONE_NUMBER VARCHAR2(20), HIRE_DATE DATE, JOB_ID VARCHAR2(10), SALARY NUMBER(8,2), COMMISSION_PCT NUMBER(2,2), DEPARTMENT_ID NUMBER(4) );
insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(1,'JIA','JENNY',3000,1); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(2,'guan','rose',4000,3); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(3,'xu','mike',2000,2); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(4,'zhang','billy',1000,2); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(5,'jin1','dede',5000,1); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(6,'jin2','dede',5000,2); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(7,'jin3','dede',5000,1); insert into emp_Examloyees(EMP_EXAMLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,DEPARTMENT_ID) values(8,'jin4','dede',5000,3); COMMIT; 第 2 页 共 13 页
(1) 使用隐式游标: 以下程序段以sql%rowcount为例展示的是隐式游标的使用方法,请阅读并理解程序,给出测试结果。 set serveroutput on; declare v_delete_count number(3); begin delete from emp_Examloyees e where e.DEPARTMENT_ID = 1; v_delete_count := sql%rowcount; commit; dbms_output.put_line('总共删除数据:' || v_delete_count || '条' ); end; / 给出运行结果:
2.显式游标: (1)用显式游标: --此处没有用循环,只能取出由标指针指向的第一条纪录 drop table emp_Exam; create table emp_Exam( id number(3), name varchar2(20), sal number(8,2) );
insert into emp_Exam values(1,'a',3000); insert into emp_Exam values(2,'b',3000); insert into emp_Exam values(3,'c',3000); insert into emp_Exam values(4,'d',3000); 第 3 页 共 13 页
commit; set serveroutput on; declare cursor c is select * from emp_Exam; v_all_emp_Examl emp_Exam%rowtype; begin open c; fetch c into v_all_emp_Examl; dbms_output.put_line(v_all_emp_Examl.id || '--' || v_all_emp_Examl.name ||'--' || v_all_emp_Examl.sal); close c; end; /
请给出执行结果:
(2)用显式游标循环取值: --显示游标循环取值: declare cursor c is select * from emp_Exam; v_all_emp_Examl emp_Exam%rowtype; begin open c; loop fetch c into v_all_emp_Examl; exit when c%notfound; dbms_output.put_line(v_all_emp_Examl.id || '--' || v_all_emp_Examl.name ||'--' || v_all_emp_Examl.sal); end loop; close c; end; / 给出运行结果:
3.游标功能使用综合: --游标的功能展示,这里展示了%isopen,%found,% 第 4 页 共 13 页
Declare temp_Examsal scott.emp_Exam.sal%Type; Cursor mycursor Is Select * From scott.emp_Exam e Where e.sal=temp_Examsal; currentrecord mycursor%Rowtype; Begin temp_Examsal:=3000; temp_Examsal:=800; --打开游标 If mycursor%Isopen Then dbms_output.put_line('该游标已经打开了,正在关闭!'); Close mycursor; Open mycursor; Else dbms_output.put_line('游标关闭,正在打开!'); Open mycursor; End If; --读取数据 Fetch mycursor Into currentrecord; If mycursor%Found Then dbms_output.put_line('游标已经取到数据,查询结果是:'); dbms_output.put_line(to_char(currentrecord.ename)); Else dbms_output.put_line('没有要查询的结果!'); End If; --读取记录总条数 Loop Fetch mycursor Into currentrecord; Exit When mycursor%Notfound; End Loop; dbms_output.put_line('查结果总共有:'||mycursor%Rowcount); --关闭游标 If mycursor%Isopen Then dbms_output.put_line('正在关闭游标,程序正常结束!'); Close mycursor; End If; End; 给出运行结果: 第 5 页 共 13 页 6.2.异常处理
阅读并理解以下程序,掌握异常处理的一般形式,给出运行结果。 0.准备测试表和数据: drop table sm_emp_Exam; CREATE TABLE sm_emp_Exam( no char(4), name char(10), salary number(6,2), phone char(8) );
--insert TOM INSERT INTO sm_emp_Exam VALUES ('001','TOM',999.99,'62543678'); commit;
--insert TOM again INSERT INTO sm_emp_Exam VALUES ('002','TOM',999.99,'62543678'); commit;