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

create or replace procedure p

is

  cursor c

  is

  select * from dept2 for update;

begin

  for row_record in c loop

    if (row_record.deptno = 30) then

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

    end if;

  end loop;

end;

 

exec p;

 

begin

p;

end;

 

--带参存储过程

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

--out 输出参数

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

create or replace procedure p2(

       a in number,

       b number,

       s_result out number,

       s_temp in out number

  )

is

begin

  if (a > b) then

    s_result := a;

  else

    s_result := b;

  end if;

  s_temp := s_temp + 3;

end;

 

--调用存储过程

declare

  v_a number := 4;

  v_b number := 6;

  v_result number;

  v_temp number := 5;

begin

  p2(v_a, v_b, v_result, v_temp);

  dbms_output.put_line(v_a);

  dbms_output.put_line(v_b);

  dbms_output.put_line(v_result);

  dbms_output.put_line(v_temp);

end;

 

---删除一个表的过程

create or replace procedure drop_table(tname varchar2)

as

  total int := 0;

begin

     select count(*) into total from user_tables 

            where table_name = upper(tname);

     if total >= 1 then

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

     end if;

end;

select * from user_tables;

 

--递归存储过程

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

is

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

       prefixStr varchar(255);

begin

  for i in 1..sLevel loop

    prefixStr := prefixStr || '----';

  end loop;

  

  for row_data in c loop

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

    pro_emp(row_data.empno, sLevel + 1);

  end loop;

end;

 

select * from emp;

begin

  pro_emp(7839, 0);

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. BestCoder Round #85 hdu5776 sum

    sum 题意: 问题描述 给定一个数列,求是否存在连续子列和为m的倍数,存在输出YES,否则输出NO 输入描述 输入文件的第一行有一个正整数T,表示数据组数. 接下去有T组数据,每组数据的第一行有两个 ...

  2. JAVA元运算符,一元运算符,二元运算符,三元运算符

    一元运算符: 序号 一元运算符 说明 1 i++ 给i加1 2 i-- 给i减1 3 ++i 给i加1 4 --i 给i减1 i++;/*例:int i=1;i++;//先将i的值1赋值给i,然后i再 ...

  3. Servlet3.0学习总结(二)——使用注解标注过滤器(Filter)

    Servlet3.0提供@WebFilter注解将一个实现了javax.servlet.Filter接口的类定义为过滤器,这样我们在web应用中使用过滤器时,也不再需要在web.xml文件中配置过滤器 ...

  4. bootstrap-下拉菜单

    <!-- 1.给父级添加class为dropdown,或者给父级添加定位属性 2.给button添加data-toggle="dropdown"属性,并添加dropdown- ...

  5. 容易导致outofmemoryException内存泄漏异常的编码问题

    1.System.Drawing方面的类使用问题 System.Drawing用到了很多系统的资源和非托管代码,所以使用的时候要特别小心,注意内存泄漏(Memory Leak) 2.new byte[ ...

  6. DEDE织梦,文章页里的幻灯调用,能调用全部栏目的吗

    arclist 是必须要有 typeid 设置的,如果你没设置,默认是取的当前栏目的 typeid,而首页取到的是 top,所以你强制指定typeid=top就可以了.---------------- ...

  7. Celery 使用简介

    转自:http://liuzxc.github.io/blog/celery/ Celery 是一个简单.灵活且可靠的,处理大量消息的分布式系统,它是一个专注于实时处理的任务队列, 同时也支持任务调度 ...

  8. Linux下网络编程学习杂记

    1.TCP/IP协议的体系结构包含四层:应用层(负责应用程序的网络服务,通过端口号识别各个不同的进程)->传输层(传输控制层协议TCP.用户数据报协议UDP.互联网控制消息协议ICMP)-> ...

  9. cookie、session、sessionid 与jsessionid

    可查看 http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html

  10. 【Base64&UrlEncode】

    base641.包含A-Z a-z 0-9 和加号“+”,斜杠“/” 用来作为开始的64个数字. 等号“=”用来作为后缀用途.2.2进制的.3.要比源数据多33%.4.常用于邮件.5.  = 号的个数 ...