1. --create or replace 创建或替换,如果存在就替换,不存在就创建

  1. create or replace procedure p

  1. is

  1. cursor c

  1. is

  1. select * from dept2 for update;

  1. begin

  1. for row_record in c loop

  1. if (row_record.deptno = 30) then

  1. update dept2 set dname = substr(dname, 0, length(dname) - 3) where current of c;

  1. end if;

  1. end loop;

  1. end;

  1. exec p;

  1. begin

  1. p;

  1. end;

  1. --带参存储过程

  1. --in 输入参数,不带in out 默认输入参数

  1. --out 输出参数

  1. --in out 同时带的是输入输入参数

  1. create or replace procedure p2(

  1. a in number,

  1. b number,

  1. s_result out number,

  1. s_temp in out number

  1. )

  1. is

  1. begin

  1. if (a > b) then

  1. s_result := a;

  1. else

  1. s_result := b;

  1. end if;

  1. s_temp := s_temp + 3;

  1. end;

  1. --调用存储过程

  1. declare

  1. v_a number := 4;

  1. v_b number := 6;

  1. v_result number;

  1. v_temp number := 5;

  1. begin

  1. p2(v_a, v_b, v_result, v_temp);

  1. dbms_output.put_line(v_a);

  1. dbms_output.put_line(v_b);

  1. dbms_output.put_line(v_result);

  1. dbms_output.put_line(v_temp);

  1. end;

  1. ---删除一个表的过程

  1. create or replace procedure drop_table(tname varchar2)

  1. as

  1. total int := 0;

  1. begin

  1. select count(*) into total from user_tables

  1. where table_name = upper(tname);

  1. if total >= 1 then

  1. execute immediate 'drop table '||tname; --此处必须用动态sql

  1. end if;

  1. end;

  1. select * from user_tables;

  1. --递归存储过程

  1. create or replace procedure pro_emp(sEmpno emp.empno%type, sLevel integer)

  1. is

  1. cursor c is select * from emp where mgr = sEmpno;

  1. prefixStr varchar(255);

  1. begin

  1. for i in 1..sLevel loop

  1. prefixStr := prefixStr || '----';

  1. end loop;

  1. for row_data in c loop

  1. dbms_output.put_line(prefixStr || row_data.ename);

  1. pro_emp(row_data.empno, sLevel + 1);

  1. end loop;

  1. end;

  1. select * from emp;

  1. begin

  1. pro_emp(7839, 0);

  1. end;

Oracle笔记 十、PL/SQL存储过程的更多相关文章

  1. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  2. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  3. Oracle数据库之PL/SQL触发器

    Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 ...

  4. Oracle数据库之PL/SQL过程与函数

    Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据 ...

  5. Oracle数据库之PL/SQL程序设计简介

    PL/SQL程序设计简介 一.什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写. ORACLE的SQL ...

  6. oracle数据库之PL/SQL 块结构和组成元素

    一.PL/SQL 块 (一)PL/SQL 程序由三个块组成,即声明部分.执行部分.异常处理部分 PL/SQL 块的结构如下: 1.DECLARE /* 声明部分: 在此声明 PL/SQL 用到的变量, ...

  7. ORACLE中的PL/SQL

    一. 1.过程,函数,触发器是pl/sql编写.                2. 过程函数触发器是在Oracle中.                      3.pl/sql是非常强大的数据库过 ...

  8. 《oracle每日一练》免安装Oracle客户端使用PL/SQL

    免安装Oracle客户端使用PL/SQL Oracle客户端挺招人烦的,部署连接它的应用通常需要先安装它的客户端,安装程序要求在目标机器上写注册表,假设你没有洁癖的话,你仍可能被下面的事情绊住:当你的 ...

  9. Oracle 客户端安装 + pl/sql工具安装配置

    Oracle 客户端安装 +  pl/sql工具安装配置 下载oracle客户端,并在本地安装. 11g下载地址为: http://www.oracle.com/technetwork/databas ...

  10. oracle instantclient basic +pl/sql 安装和配置

    oracle instantclient basic +pl/sql 安装和配置 大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的,oracle客户端有点大,比较耗资源. ...

随机推荐

  1. C++模板元编程 - 1 基本数据类型和运算

    这是博客开通前几天做的,C++的模板没办法存方便的浮点数,算了. 基本类型的设计参考了vczh轮子叔模仿boost的MPL的设计. 话说template和typename写多了真是无限烦人啊,不得已定 ...

  2. Java NIO使用及原理分析 (一)

    http://blog.csdn.net/wuxianglong/article/details/6604817

  3. LPC1768之ISP

    一 使用到的芯片内部资源: 1必须是P2.10 2RESET引脚 3必须是串口0 4使用FLASH magic工具. 二操作方法: 先按下reset不放,然后按下ISP,抬起reset,抬起ISP就能 ...

  4. Coding 初级教程(二)——上传已有项目

    Coding 初级教程(二)——上传已有项目 [摘要:方针读者 :已具有 Coding.net 的账号. 本文首要先容若何把项目上传到 Coding.net 上. 分两种环境,一种是项目已归入到 gi ...

  5. Log4Net在Windows服务中不能记录日志 z

    解决方案: 在Windows安装服务的“serviceProcessInstaller1”中修改Account属性为LocalSystem.见下图 后来查了一下这个Account属性 说白了还是权限的 ...

  6. ruby字符串学习笔记4

    1 单独处理字符串的字符 如果处理的是ASCII码的文档使用string#each_byte 注意 没有 string#each方法,String#each_byte 速度比 String#scan快 ...

  7. 查看MySQL的错误日志的方法

    我们经常在运行MySQL时会出一些错误,也经常被这些错误搞得晕头转向.当然解决这些问题的首要任务是找到日志信息. MySQL的错误信息是在data目录下的,且文件名为<hostname>. ...

  8. .NET单元测试

    原文链接:http://www.cnblogs.com/edisonchou/p/5467573.html

  9. ServiceBroker创建流程

    首先为这个数据库开启Service Broker ALTER DATABASE [T_EIP_UnityStore] SET ENABLE_BROKER 创建MessageType CREATE ME ...

  10. cvs 用法

    CVS使用指南 1 概念 CVS是Client/Server结构的并行版本控制系统. 资源库(repository) 存在于服务器上,所有版本的数据仓库.可以把它想象成一个数据库服务器. 模块 (mo ...