Oracle PL/SQL 编程基础 实例 2

标签: oracle pl sql | 发表时间:2014-05-12 17:28 | 作者:fangchao3652
分享到:
出处:http://blog.csdn.net
if  循环  控制语句 


if--then        endif


if----then ----else   endif


if-----then --elsif then ----else     endif


--编写一个过程,可以 输入一个雇员名,如果该雇员的工资低于2000就给他增加10%
    create   or replace procedure  sp_pro6(spName varchar2) is
       v_sal  emp.sal %type;
       begin  
          select sal into v_sal from emp where  ename =spName;
          --判断
          if v_sal<2000 then  
              update emp set sal=sal*1.1 where ename =spName;
           end if;
       end;
--======####案例s33 编写一个过程,可以 输入一个雇员名,如果该雇员的补助不是0就在原基础上增加100,如果是0就加200
    create   or replace procedure  sp_pro7(spName varchar2) is
       v_comm  emp.comm %type;
       begin  
          select comm into v_comm  from emp where  ename =spName;
          --判断
          if v_comm<>0 then  
              update emp set comm=comm+100 where ename =spName;
          else 
            update emp set comm=comm+200 where ename =spName;
           end if;
       end;








----========循环   loop    end loop
       -----案例  编写一个过程 可输入用户名 并添加10个用户到users表中  用户编号从1来时增加
       --建个表 
        create table users1(uid1 number,uname varchar2(40));
       
         create or replace procedure  sp_pro8(spName varchar2)  is
         --定义变量
           v_num number :=1;
           begin
             loop 
                 insert  into users1 values(v_num,spName);
                 --判断是否退出循环
                   exit  when  v_num =10;
                  --自增
                   v_num:=v_num+1;
             end loop; 
           end;
           
           
  ----------------===while   ...loop    end   loop 
  
  
      ----===案例   从11 开始 添加10个用户
      create or replace procedure  sp_pro8(spName varchar2)  is
         --定义变量
           v_num number :=11;
           begin
            while  v_num<=20
              loop 
                 --执行
                   insert  into users1 values(v_num,spName);
                  --自增
                   v_num:=v_num+1;
                end loop; 
           end;
 ---------------------for      
           begin  for i in  reverse 1.. 10 loop
             insert  into users1 values(v_num,spName);
             end loop;
             end;
            
 
 -----------------顺序控制语句 goto  null   
       goto  label 
       
       <<label>>  
        
      
-----=-----------返回结果集的过程----=======
 ---1.----创建 一个 包 在该包中 定义一个 类型 test_cursor  是个游标
      Create or replace package  testpackage as
        type  test_cursor is ref cursor;
       end  testpackage;
-----2.创建过程
       create  or  replace  procedure  sp_pro9 (spNO in number,p_cursor  out testpackage.test_cursor)
        is
         begin 
           open  p_cursor for select * from  emp where  deptno=spNO;
          end;
    
       
 
 -----3.如何在java中调用 
    ---1.创建 Callablestatement cs =ct.prepareCall([call sp_pro9(?,?)]);
    ---- cs.setInt(1,10);
    ----cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
    --执行--cs.execute();
     --得到结果集    
         /*ResultSet rs=(ResultSet)cs.getObject(2);    
       
            while(rs.next()){
            ....
            }*/




---------------------例外处理---------
        case_not_found 
        data_not_found 
        cursor_already_open 
        dup_val_on_index  唯一索引重复
        invaild_cursor 在不合法的游标上执行操作 比如 从没有打开的游标取值 或关闭没有打开的游标
        invalid_number  
        too_many_rows  select  into 的时候 返回超过一行
        zero_divide   2/0
        value_error  变量长度不足以容纳实际长度 
        
          -----自定义例外
            create  or replace procedure ex_test(spNO number)
              is 
              --定义一个例外
              myex exception;
           begin 
              update  emp set sal=sal+1000 where empno=spNO;
              --sql%notfound  表示没有update
              --raise myex  触发myex
              if sql%notfound then
                raise myex;
              end if;
              exception 
                 when myex then 
               dbms_output.put_line('没有更新任何用户');
                 
           end;     
    
-----------------------------视图---------------
   --视图不能添加索引
   create view myview as select * from  emp where sal<1000;     
    select * from myview;  

作者:fangchao3652 发表于2014-5-12 17:28:26 原文链接
阅读:115 评论:0 查看评论

相关 [oracle pl sql] 推荐:

Oracle PL/SQL 编程基础 实例 2

- - CSDN博客数据库推荐文章
if  循环  控制语句 . --编写一个过程,可以 输入一个雇员名,如果该雇员的工资低于2000就给他增加10%.           --判断. --======####案例s33 编写一个过程,可以 输入一个雇员名,如果该雇员的补助不是0就在原基础上增加100,如果是0就加200.           --判断.

Oracle PL/SQL 编程基础 实例

- - CSDN博客数据库推荐文章
1, exec 过程名 (参数,.  call 过程名 (参数  ).   dbms_output.put_line('姓名:'||v_ename);.                           --执行部分.  --------------函数 -------.    -------包------------由包规范和包体组成的.

Oracle PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR

- - CSDN博客互联网推荐文章
Oracle有三种类型的异常错误:. 1. 预定义(Predefined)异常. ORACLE预定义的异常情况大约有24个. 对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发. 2. 非预定义(Predefined)异常. 即其他标准的ORACLE错误. 对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发.

不安装Oracle客户端情况下用PL/SQL连接远程服务器

- - 数据库 - ITeye博客
首先下载免安装的客户端instantclient_12_1,. 解压缩 instantclient_12_1 到 D:\Oracle\instantclient_12_1(解压到任意目录即可). 在文件夹内建立目录, /NETWORK/ADMIN. 在该目录下,新建文件tnsnames.ora. 在thsnames.ora中写入:.

PL/SQL动态SQL(原创)

- - ITeye博客
使用动态SQL是在编写PL/SQL过程时经常使用的方法之一. 很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行SQL查询语句,对于这种情况需要使用动态SQL来完成. 再比如,对于分页的情况,对于不同的表,必定存在不同的字段,因此使用静态SQL则只能针对某几个特定的表来形成分页.

PL/SQL学习汇总

- - CSDN博客数据库推荐文章
sql是非过程语言,在编程中总是会用到过程化控制,PL/SQL就是提供了过程化控制的语言来弥补SQL语言的这一点缺陷. PL/SQL 语句在后面的执行中  pl/sql语句由 PL/SQL引擎执行,SQL语句由 sql引擎执行. PL/SQL 集成了过程化与SQL一起使用, 提高了性能,因为一个过程执行完成后,.

PL/SQL流程控制(原创)

- - ITeye博客
类似于高级语言,流程控制语句是PL/SQL语言的重要组成部分. 这些流程控制语句使得PL/SQL加大了代码的灵活性和多样性,大大简化了程序的编写. 下面将列出流程控制语句并给出具体事例. 判断condition是否成立,成立就执行IF 与END IF 之间的语句. 例:输入员工编号,查询其工资,如果他们的职位是CLERK,则工资增加%,再显示修改前后的工资数.

PL/SQL Developer 9.06.1665 简体中文注册版

- - 快乐无极的博客
此版是最新9.06.1665版+汉化包,先安装主程序,再安装汉化包,内附注册码. 仅供技术交流和测试之用,如做其它用途,请支持正版. Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发. 如今,有越来越多的商业逻辑和应用逻辑转向了Oracle. Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分.

利用pl/sql执行计划评估SQL语句的性能简析

- - Oracle - 数据库 - ITeye博客
    一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在. 那么,作为开发人员,怎么样比较简单的利用执行计划评估SQL语句的性能呢. 总结如下步骤供大家参考:. 1、 打开熟悉的查看工具:PL/SQL Developer.

Oracle SQL性能优化

- - 数据库 - ITeye博客
(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):. ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表. 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.