`
greemranqq
  • 浏览: 967079 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

PL/SQL 存储过程介绍六)

阅读更多
oracle 存储过程(procedure):

一、介绍
   存储过程,简单的认为就是SQL + 一些简单逻辑 的综合体。
   这里大概记录一下优点:
   1.复杂业务(同时对多张表进行CRUD操作),我们如果执行多条SQL,可能会有多个连接。过程可以放在一个事务里面,时间快
   2.程序处理的业务,有可能会出现无法预判的BUG ,而过程只要数据没错,就不容易出错,安全性高
   3.利用数据内置的操作,数据与数据的交互会更加快捷。
   4.创建的时候就已经编译了,传入SQL执行,有些会执行一次编译一次,执行效率就高了。
   5.可以重复使用,并行开发,分布测试。
   6.可以设置权限,安全性高
   
   缺点:
   1.调试麻烦,估计是我们用好!
   2.数据库迁移麻烦,可能从oracle到mysql迁移等等。
   3.维护麻烦,过多的过程,一旦久远,需求变化,维护人员看着都头疼!

 

二、简单学习:
    1.语法:
    -- 名字有可读性,OR REPLACE 默认会覆盖同名的
    CREATE OR REPLACE PROCEDURE PROCEDURE_NAME
    IS      -- 后面PL/SQL 开始
    Begin   -- 开始
    NULL;   -- PL/SQL 体,什么都不做,必须要NULL
    END;    -- 结束

    1.1 带参数的过程
    -- in 为输入参数,可以省略,out 为输出参数,不可省略
    -- 用逗号隔开,不限定长度
    CREATE OR REPLACE PROCEDURE PROCEDURE_NAME(参数名1 in 类型,参数名2 out 类型)
    as
    -- 可以设置变量,参考前面的PL/SQL
    变量1  类型(值范围); -- 比如:v_name varchar2(20)    
    Begin
    null;
    end;
从总体来看,过程 就是 CREATE OR REPLACE PROCEDURE PROCEDURE_NAME ,加上了 前2节讲的PL/SQL 语法,没啥特别的.

 

三、简单实例
    table:test_table: user_id number, password varchar(20),user_name varchar(20)
    
    1.业务: 把所有user_name为ran 的改为Qi,并且把user_name 为ran2 的删除
    
     create or replace procedure update_delete_pro
	is
	begin
  	  update test_table set user_name='Qi'  where user_name ='ran';
  	  delete from test_table where user_name = 'ran2';
	end;

     在pl/sql 工具中:可以exec update_delete_pro;也可以在pl/sql 块儿中:
     declare
     begin
  	update_delete_pro; 
     end;
 
   2. 业务:根据传入user_id 的奇偶,判断查询  user_name,还是passsword;
     create or replace procedure select_by_id_pro(v_user_id number,val out varchar2)
	is
	begin
  		if  v_user_id mod 2 = 1 then
     	select user_name into val from test_table where user_id = v_user_id;
 		elsif  v_user_id mod 2 = 0 then
     	select password into val from test_table where user_id = v_user_id;
 		end if;
	end;

    调用:
    set serveroutput on;
	declare
		parm varchar2(20);
	begin
		select_by_id_pro(5,parm);
		dbms_output.put_line(parm);
	end;
  
    3.业务:查询user_name = ran 和人数,以及全部的结果集,返回两个结果
     	
        -- 这里默认是系统游标变量
	create or replace procedure getList_pro(num out number,cur_arg out sys_refcursor)
	is
	begin
  		open cur_arg for select * from test_table;
  		select count(*) into num from test_table where user_name = 'ran';
	end;
     调用:

      declare
       args Sys_RefCursor; -- 定义游标类型
       rw_stu test_table%rowtype;-- 定义表类型
       num number;
      begin
        getList_pro(num,args);
        dbms_output.put_line(num);
        -- 这里不能直接用for ,容易报“不是过程或尚未定义”
        loop
          fetch args into rw_stu;
          exit when args%notfound;
          dbms_output.put_line('name:'||rw_stu.user_name);
      end loop;
    end;

 

   小结: 

    过程就是编译好的PL/SQL 块,加快执行和方便调用。一般情况 要加上 包(package) 配合使用。

    这里先介绍简单语法,做个基本了解,上手就行,后续再加     

 

 

0
0
分享到:
评论

相关推荐

    sql pl/sql存储过程

    SQL and Pl/SQL培训文档 第一天 第一章 PL/SQL 简介 安装scott/tigger用户模式 Example1 标准的PL/SQL块结构 PL/SQL块类型 Example2:子程序,函数,程序包 PL/SQL代码的执行 第二章 PL/SQL数据类型 预定义数据类型 ...

    PL/SQL存储过程笔记

    PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记

    PL/SQL 存储过程

    数据库概论第八章实验六,使用T-SQL编写存储过程并访问数据库 代码+截图

    oracle pl/sql 存储过程和函数与触发器

    oracle pl/sql 存储过程和函数与触发器

    PL/SQL Developer9.06

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL 的函数与存储过程练习

    PL/SQL 的函数与存储过程练习 PL/SQL 的函数与存储过程练习

    oracle PL/SQL测试题目和详细答案

    pl/sql存储过程,函数,游标,以及存储过程中的基础知识,绝对值得你收藏的经典题目,让你的pl/sql得到最大的锻炼。让你的数据库逻辑更加灵活。

    PL/SQL Developer V7.1.4

    PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,大大缩短了程序员的开发周期。强大的PL/SQL编辑器,完善的Debugger...

    PL/SQL存储过程编程

    Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 希望对你们能有所帮助。

    PL/SQL 程序设计

    PL/SQL 程序设计 本章主要重点:  PL/SQL概述  PL/SQL块结构  PL/SQL流程  运算符和表达式  游标  异常处理  数据库存储过程和函数  包  触发器

    ORACLE PL/SQL 存储过程 触发器

    ORACLE PL/SQL 存储过程 触发器 ORACLE PL/SQL 存储过程 触发器 子程序 游标

    PL/SQL存储过程语法(注释详细,例子多)

    PL/SQL存储过程语法(注释详细,例子多,注释十分清楚,入门良册) PL/SQL存储过程语法(注释详细,例子多,注释十分清楚,入门良册)

    PL/SQL Developer 6.05注册版-1

    PL/SQL Developer(pl/sql)是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。 <br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================...

    PL/SQL Developer v8.0.zip

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL Developer 9.0.4.1644 绿色中文版_带注册机

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL学习笔记

    PL/SQL从入门到精通学习帮助手册,PL/SQL简介,PL/SQL操作,存储过程,触发器等

    PL/SQL程序设计

    PL/SQL是对SQL语言存储过程语言的扩展。从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL。它现在已经成为一种过程处理语言,简称PL/SQL。目前的PL/SQL包括两部分,一部分是数据库引擎部分;另一部分是可嵌入到许多产品...

    PL/SQL Developer 7.1.5 注册版-3

    PL/SQL Developer(pl/sql 7.1.5)是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。 <br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ==============...

    PL/SQL Developer

    PL/SQL Developer超强大的oracle...PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,可以大大缩短程序员的开发周期。

    C++ 嵌入匿名ORACLE PL/SQL存储过程

    代码演示c++ builder 中嵌入 Oracle PL/SQL 存储过程,可以参照此例,使开发有更大的灵活性。

Global site tag (gtag.js) - Google Analytics