PL/SQL 编程(二)

版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/u011685627/article/details/26299399


1    For循环
    语法:begin
            for i in reverse 1..10 loop
            insert into users values(i,’奥巴马‘)。
            end loop;
          end;
    注意:循环变量 i 是隐含添加的。所以无法看到
    
2    goto语句
    goto 语句用于跳转到特定的位置去运行语句。因为goto语句会降低程序的可读性,所以普通情况下
    不建议使用goto语句
    
3    null语句
    null语句不会运行不论什么操作,可是能够添加程序的可读性
    
4    创建返回值是一个结果集的存储过程
    (1) 创建一个包:
        SQL> create or replace package testpackage as
             type test test_cursor is ref cursor;
             end testpackage;
            
    (2) 创建存储过程
        SQL> create or replace procedure sp_procedure1
             (stuNo in number, param_cursor out testpackage.test_cursor) is
             begin
                open param_cursor for select * from emp where sutno=stuNo;
             end;
    
5    分页
    (1) sql语句
        select * from
        (select *,rownum NO from
        (select * from emp) where rownum <=20) where rownum >=10;
        
    (2)    创建一个包
        create or replace package testpackage2 as
             type test test_cursor is ref cursor;
             end testpackage2;
            
    (3)    创建存储过程
        SQL> create or replace procedure procedureName2
            (tableName in varchar2,                    -- 表名
            pageSize in number,                        -- 每页显示的记录数
            pageNow in number,                        -- 当前是第几页
            pageCount out number,                    -- 总页数
            p_cursor out testpackage2.test_cursor) is
            v_sql varchar2(1000);
            v_beginNum number := (pageNow -1)* pageSize + 1;
            v_endNum number := pageNow * pageSize;
            begin
                v_sql := 'select * from (select *,rownum NO from (select * from '|| tableName ||')
                where rownum <= '|| v_endNum ||') where rownum >= '|| v_beginNum;
                open p_cursor for v_sql;
                -- 创建一个sql语句
                v_sql := 'select count(*) from ' || tableName;
                -- 运行sql语句,将结果保存
                execute immediate v_sql into rows。
                if mod(rows,pageSize) = 0
                then pageCount := rows / pageSize;
                else
                pageCount := rows / pageSize + 1;
                end if;
                -- 关闭游标
                close p_cursor;
            end;
    
6    异常处理
    (1) 提前定义异常
    (2) 非提前定义异常
    (3) 自己定义异常
    
    例1
    SQL> declare v_name emp.ename%type;
         begin
         select ename into v_name from emp where empno = &no;
         dbms_output.put_line('名字:' || v_name);
         exception
            when no_data_found
            then dbms_output.put_line('编号没有!

');
         end;
        
    提前定义异常
    a case_not_found
      在编写case 语句时。假设在when子句中没有包括必须的条件分支(没有符合条件的)。就会触发case_not_found异常
    b cursor_already_open
      当又一次打开已经打开的游标时触发此异常
    c dup_val_on_index
      在唯一索引所相应的列上插入反复值时触发此异常
    d invalid_cursor
      当试图在不合法的游标上进行操作时触发此异常    
    e invalid_number
      当输入的数字无效时触发此异常
    f too_many_rows
      当返回值不止是一条记录时触发此异常
    g zero_divide
      当进行 x/0,即除数为零的操作时触发此异常
    h value_error
      当进行赋值操作时,假设变量的长度不足以存储实际数据时触发此异常
    i login——denide
      当用户非法登录时会触发此异常
    j not_logged_on
      假设用户没有登录就运行DML操作,就会触发此异常
    k storage_error
      假设超出了内存空间,就会触发此异常
    l timeout_on_resource
      当Oracle等待资源时。假设发生超时情况,就会触发此异常

    自己定义异常
    SQL> create or replace procedure procedureName2(sp_empNo number) is
         MyExpception Exceptiom;        -- 自己定义一个异常
         begin
         update emp set sal = sal * 1.2 where empno = &no;
         if sql%notfound then
            raise MyExpception;            -- 触发自己定义异常
         end if;
         exception
            when no_data_found
            then dbms_output.put_line('没有更新数据!

');
         end;

















    
    
    
    
    
   

转载于:https://www.cnblogs.com/mqxnongmin/p/10670815.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作375-input readonly

readonly 属性规定输入字段为只读。 只读字段是不能修改的。不过&#xff0c;用户仍然可以使用 tab 键切换到该字段&#xff0c;还可以选中或拷贝其文本。 readonly 属性可以防止用户对值进行修改&#xff0c;直到满足某些条件为止&#xff08;比如选中了一个复选框&#xff…

[导入]使用SqlCommand对象执行存储过程

表tbClass存放论坛分类 字段名 字段类型 允许空 说明 ClassID uniqueidentifier 否 GUID主键&#xff0c;默认值newid() ClassName Varchar(50) 否 分类名 表tbBoard存放论坛分类中的版块 字段名 字段类型 允许空 说明 BoardID uniqueidentifier 否 GUID主键…

鸿蒙系统开发资金,华为终于动手,将拿出超十亿资金,开发者们有福了

原标题&#xff1a;华为终于动手&#xff0c;将拿出超十亿资金&#xff0c;开发者们有福了3月份也是慢慢地要过完了&#xff0c;4月的到来&#xff0c;仿佛是一个讯号&#xff0c;毕竟鸿蒙即将上线&#xff0c;大家都在期待着这款华为国产的系统&#xff0c;究竟能有什么表现&a…

Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

ylbtech-Java-Runoob-高级教程-实例-数组&#xff1a;10. Java 实例 – 查找数组中的重复元素1.返回顶部 1、Java 实例 - 查找数组中的重复元素 Java 实例 以下实例演示了如何在 java 中找到重复的元素&#xff1a; Main.java 文件 public class MainClass {public static void…

[导入]ServerVariables集合

APPL_PHYSICAL_PATH检索与元数据库路径相应的物理路径。AUTH_TYPE这是用户访问受保护的脚本时&#xff0c;服务器用于检验用户的验证方法。CERT_COOKIE客户端验证的唯一ID&#xff0c;以字符串方式返回。CERT_SERIALNUMBER用户验证的序列号字段。CERT_SERVER_ISSUER服务器验证的…

华为android9.0升级,华为官方更新消息:这几款手机9月5日分批推送安卓9.0系统升级...

原标题&#xff1a;华为官方更新消息&#xff1a;这几款手机9月5日分批推送安卓9.0系统升级随着手机技术的不断发展&#xff0c;不仅手机更新换代加快&#xff0c;就连手机系统也在快速更新&#xff0c;可能很多花粉刚刚升级了基于Android8.0的EMUI8.0系统&#xff0c;对于Andr…

[jQuery] jQuery的attr和prop方法有什么区别?

[jQuery] jQuery的attr和prop方法有什么区别&#xff1f; 一、property 固有属性。 打开控制台审查元素 切换Tab至 Properties下 查看固有属性二、自定义属性(固有属性列表中没有的属性&#xff0c;都称为自定义属性。)1: 对于HTML元素本身就带有的固有属性&#xff0c;在处理时…

python中strip、startswith、endswith

python中strip、startswith、endswith strip(rm)用来删除元素内的空白符&#xff1a; rm对应要删除空白符的元素&#xff0c;当rm为空(strip())时删除所有元素的空白符 startswith、endswith用来查找开头或结尾条件的元素 例子&#xff1a; 1 li ["alec", " ar…

[jQuery] jQuery是如何链式调用的?

[jQuery] jQuery是如何链式调用的&#xff1f; 返回对象本身即可&#xff0c;类似 obj { func: function(){ return obj } }&#xff0c; 那么 obj.func().func() 可以无限而链式的调用下去。 而函数内的 obj 往往也可以用 this 来轻松方便地取代。个人简介 我是歌谣&#x…

outlook中的邮件归档

对于outlook中的邮件&#xff0c;可以通过以下方法来做到像lotus notes那样归档&#xff0c;文件->归档系统会创建C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Outlook\archive.pst文件&#xff0c;并且在“所有文件夹”区域会多出…

WPF Color、String、Brush转换

WPF Color、String、Brush转换 原文:WPF Color、String、Brush转换版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/BYH371256/article/details/79957419 //int 转 System.Windows.Media.Color private System.Windows.Media…

android终端系统时间,安卓应用修改系统时间

前言通常&#xff0c;我们来获取系统时间来做一些事情&#xff0c;那么&#xff0c;如何设置系统时间呢&#xff1f;问题抛出来&#xff0c;解决方法也就应运而生了。解决方法命令行首先我想到的是手机root&#xff0c;然后命令行date -s 要设置的时间复制代码如果手机没 root …

[jQuery] 说说看jQuery的选择器有哪些?

[jQuery] 说说看jQuery的选择器有哪些&#xff1f; 1.基本选择器: #id 、element 、.class 、* 、selector1... 2.层次选择器: ancestor descendant 、parent > child ... 3.基本过滤器选择器 :first 、:last 、:not 、:even 、:odd 、... 4.内容过滤器选择器 :contains 、…

树莓派安装dlib

在树莓派上安装Dlib for python3在前面的文章中也提到了&#xff0c;我要在树莓派上做有关人脸识别的项目&#xff0c;所以安装Dlib可以说是非常重要了。在网上也看了很多的教程&#xff0c;有安装miniconda的、还有按章berryconda的。我下载过berryconda&#xff0c;但是没有办…

REBOOT Reload - 可安装在优盘的 Windows 和 DOS 启动盘

经常会帮别人恢复系统&#xff0c;很多都能把系统恢复的&#xff0c;但是也有时只有重装&#xff0c;重装系统拿个GHOST版很容易的&#xff0c;关键是需要把里面的数据给取出来&#xff0c;一些C盘上的文档&#xff0c;最老土的办法就是拆开机箱&#xff0c;把硬盘挂到另一台系…

android红米3调用相机,红米3有什么接口?红米3有HDMI接口吗?

小米红米手机3有什么接口小米红米手机3有3.5mm耳机接口&#xff0c;microUSB充电和数据接口(采用5V/2A标准充电头)。那么小米红米手机3有什么接口?小米红米手机3采用金属机身&#xff0c;其背面由4166颗星星成菱形排列&#xff0c;设计灵感来自夜空中的繁星。当光线游走在圆点…

[jQuery] 你有写过jQuery的扩展吗?都有哪些写法?

[jQuery] 你有写过jQuery的扩展吗&#xff1f;都有哪些写法&#xff1f; jQuery扩展语法把扩展的内容就可以写到xxxx.js文件了&#xff0c;在主文件中直接导入就行了。用法1、$.xxx()$.extend({"GDP": function () {console.log("戴小红花");}});- 给jQue…

第二十一天

唉&#xff0c;前一段时间Hotle不能上网了&#xff0c;真是郁闷。 来日本整整三个星期了&#xff0c;天天写文档&#xff0c;真是烦死了。 不过幸好我的客户是个大美女&#xff0c;不到三十&#xff0c;还没结婚呢&#xff0c;哈哈。前两天他们举行新年会的时候&#xff0c;还给…

android 上下翻页素材,【Android 进阶】仿抖音系列之翻页上下滑切换视频(四)...

前言大家好&#xff0c;这是这个系列的第四篇&#xff0c;在阅读这篇文章之前&#xff0c;建议可以先看下之前系列的文章&#xff0c;为了节省篇幅&#xff0c;之前详细说过的地方&#xff0c;这里就不再详细描述了&#xff1a;这一篇&#xff0c;要说实现的是第一篇中的翻页切…

[jQuery] jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this

[jQuery] jQuery.fn的init方法返回的this指的是什么对象&#xff1f;为什么要返回this init()方法中返回的this指向init的实例对象&#xff0c;而init.prototype等于jQuery.prototype&#xff0c;所以也是jQuery的实例对象&#xff1b;返回this是为了实现链式调用个人简介 我…