Oracle笔记 十、PL/SQL存储过程

--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;

时间: 2024-10-16 09:34:39

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

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

本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQL程序设计终极指南>志在打造PL/SQL领域最为系统.全面.实战.权威的著作,通过一系列非常突出的优势在大量的同类书中脱颖而出,成为该领域的标准读物. PL/SQL本身涉及的知识点浩瀚.庞杂,初学者根本无法依靠自身能力理清头绪,学习成本极高.本书对知识点进行了体系化的梳理,化繁杂为有序,突出重点,直指核

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

有利于客户/服务器环境应用的运行 对于客户/服务器环境来说,真正的瓶颈是网络上.无论网络多快,只要客户端与服务器进行大量的数据交换,应用运行的效率自然就回受到影响.如果使用PL/SQL进行编程,将这种具有大量数据处理的应用放在服务器执行,自然就省去了数据在网上的传输时间. 适合于客户环境 PL/SQL由于分为数据库PL/SQL部分和工具PL/SQL.对于客户端来说,PL/SQL可以嵌套到相应的工具中,客户端程序可以执行本地包含PL/SQL部分,也可以向服务发SQL命令或激活服务器端的PL/SQL

PL/SQL存储过程编程

/**author huangchaobiao *Email:[email protected] */ PL/SQL存储过程编程(上) 1. Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用; 4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6) PL/SQL: 存储在数据内运行, 其他

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

Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后再次

Oracle 11g 的PL/SQL函数结果缓存

模仿Oracle性能诊断艺术中的例子做了两个试验,书上说如果不用RELIES_ON,则函数依赖的对象发生的变更操作就不会导致结果缓存的失效操作(result_cache RELIES_ON(test1,test2)),试验证明不对,函数f1()并没有使用RELIES_ON,但表上的变化影响到了函数. C:\Documents and Settings\guogang>sqlplus gg_test/[email protected]_gg SQL*Plus: Release 10.2.0.1.0

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

Oracle 客户端安装 +  pl/sql工具安装配置 下载oracle客户端,并在本地安装. 11g下载地址为: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 10g下载地址为: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 根据自己机器或者oracle服

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

免安装Oracle客户端使用PL/SQL Oracle客户端挺招人烦的,部署连接它的应用通常需要先安装它的客户端,安装程序要求在目标机器上写注册表,假设你没有洁癖的话,你仍可能被下面的事情绊住:当你的机器上的其他程序依赖于x64的Oracle的程序,并且它们很有可能根本不是你写的,因此你还不敢随便乱动服务器,但是你可能需要一个PL/SQL用来在相同的环境下执行查询,这个时候你还是需要一个免安装的办法来处理这个问题. 1.下载Oracle Instant Client (32-bit) 因为我的P

免安装Oracle客户端使用PL/SQL连接Oracle的2种方法

作者:netshuai  来源:博客园  发布时间:2009-10-23 09:19  阅读:171 次  原文链接   [收藏] 方法一: 大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的.有没要想过不安装Oracle客户端直接连接Oracle呢? 其实我一直想这样做,因为这个客户端实在太让人讨厌了!!!不但会安装一个JDK,而且还会把自己放在环境变量的最前面,会造成不小的麻烦. 其实我之前问过很多人的,但是他们都说一定需要安装Oracle客户端的.......直

免安装Oracle客户端和PL/SQL

写在前面: Oracle是典型的C/S结构,服务端提供oracle服务的实例,主要用于数据库的管理,对象的管理与存储.数据的 存储.查询.数据库资源的监控.监听等一些服务.而客户端只是一个与服务端交互的工具,如sqlplus,在sqlplus 里执行SQL语句传到服务端,服务端进行解析后执行SQL里的操作,并将操作结果输出到客户端.这就完成了一个客户 端与服务端交互的过程.简单点说,客户端就像一个远程桌面工具,只负责提供链接后台服务器的界面,具体的处理 操作都在服务器上. 上一篇文章我们主要讲解

Oracle Study之--PL/SQL Developer软件错误

Oracle Study之--PL/SQL Developer软件错误 博文在51cto和CSDN同时开通 系统环境: 操作系统: Windows  XP(64) 软件:          PL/SQL Devoloper 8.04         软件,正常安装后,在使用过程中出现以下错误:                                                                            通过scott用户登录  出现以上错误 通过sqlpl