`
greemranqq
  • 浏览: 977281 次
  • 性别: 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
分享到:
评论

相关推荐

    PL/SQL存储过程编程

    ### PL/SQL存储过程编程详解 #### 一、Oracle应用编辑方法概览 在Oracle数据库的应用开发中,存在多种编辑方法和技术,它们各有特点和适用场景。以下是对这些方法的概述: 1. **Pro*C/C++**: 这是一种C语言与...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...

    sql pl/sql存储过程

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

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    pl/sql developer11.0

    PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,专为编写、调试、测试和管理PL/SQL代码而设计。标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们...

    Oracle资料学习PL/SQL必备

    7. **存储过程和函数**:存储过程是一组可重用的PL/SQL代码,可以在数据库中保存并按需调用,而函数则返回一个值。它们可以接受参数,提高代码复用性和性能。 8. **触发器**:触发器是在特定数据库事件(如INSERT、...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    pl/sql64位

    PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...

    PL/SQL 基本知识

    例如,在`jbpm.sql`文件中,可能包含了与业务流程管理(BPM)相关的PL/SQL存储过程或函数,用于定义和执行工作流任务。 此外,PL/SQL还支持块的概念,如匿名块,这使得在不创建独立的存储过程或函数的情况下,也能...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle PL/SQL程序设计(第5版)(上下册)

    #### 六、高级PL/SQL主题 - **并发控制**:讨论并发控制机制,如锁、锁定模式及其对应用程序性能的影响。 - **调试与故障排除**:介绍调试PL/SQL代码的方法,包括使用调试器和日志记录等。 - **存储过程的最佳实践*...

    pl/sql 免安装,绿色版pl/sql

    免安装的绿色版PL/SQL Developer使得用户无需经历复杂的安装过程,只需解压即可使用,大大简化了软件部署,方便在不同的计算机环境间快速切换。 这款绿色版PL/SQL Developer包含了所有必要的组件和配置文件,确保...

    PL/SQL VCS插件安装包+PL/SQL

    PL/SQL VCS插件是为开发者提供的一种增强工具,它与PL/SQL Developer整合,目的是为了更好地管理和控制Oracle数据库中的SQL脚本和存储过程的版本。这个安装包结合了Version Control System (VCS)的功能,如Visual ...

    PL/SQL 存储过程

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

    oracle pl/sql从入门到精通 配套源代码

    2. **存储过程和函数**:这些是PL/SQL的核心组成部分,它们封装了一系列操作,可以被多次调用,提高代码复用性。书中可能包含各种示例,如自定义计算函数、处理业务逻辑的存储过程等。 3. **触发器**:当数据库中的...

    pl/sql快捷插件

    PL/SQL Developer是一款由Allround Automations公司开发的专门用于Oracle数据库管理的集成开发环境(IDE)。这款软件为Oracle数据库管理员、开发人员和测试人员提供了便捷的SQL和PL/SQL编写、调试和执行功能。而“pl...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种...书中可能包含各种类型的PL/SQL程序设计技巧,从简单的存储过程和函数到复杂的事务处理和并发控制策略。通过实例学习,你将能够更好地理解和运用这些概念,提升你在Oracle数据库开发中的技能。

    PL/SQL下载

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程编程的语言,专为数据库管理和应用程序开发设计。PL/SQL全称为“Procedural Language/Structured Query Language”,它提供了丰富的控制...

Global site tag (gtag.js) - Google Analytics