- 浏览: 1728978 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (288)
- java (59)
- javaweb (15)
- eclipse (16)
- uml (1)
- java ee (7)
- windows (5)
- html (4)
- 数据结构和算法 (6)
- oracle (84)
- struts (3)
- ajax (3)
- hibernate (3)
- spring (12)
- ExtJS (14)
- 随笔 (2)
- JavaScript (9)
- PL SQL (12)
- tomcat (2)
- Plugins (5)
- office (2)
- webService (4)
- others (9)
- htc (1)
- 自定义标签的行为 (1)
- powerDesigner (3)
- webSphere (5)
- linux (6)
- dom4j (1)
- xml (5)
- json (2)
- bat (4)
- spring MVC (5)
- MySQL (12)
- junit (4)
- maven (10)
- jquery (1)
- mongoDB (16)
- git (0)
- mybatis (5)
- svn (3)
- activemq (3)
- quartz_job (1)
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
利用powerDesigner逆向导出oracle表为PDM并把PDM转为CDM -
sanshao:
roompig 写道beancopier只实现了浅拷贝的功能, ...
使用Cglib的BeanCopier实现Bean的拷贝 -
贝塔ZQ:
Java实现导入导出excel文件,利用poi实现感觉代码比较 ...
利用java导入导出excel到oracle数据库 -
suxj16:
部署之后启动有问题org.springframework.be ...
spring mvc文件上传实现进度条(转) -
suxj16:
谢谢分享。部署之后启动有问题org.springframewo ...
spring mvc文件上传实现进度条(转)
一、子程序的概念。
a.是一个命名的pl/SQL块。
b.通常能够接收传递的参数,能够被别人调用。
c.基于标准的PL/SQL块结构,包括声明部分,可执行呢部分,异常处理部分,结束部分。
二、子程序的类型.
a.存储过程:通常执行的是某个动作。
b.函数:通常执行的某个计算。
三、存储过程
是一种执行某项动作的子程序,被当做一个数据库对象保存在数据库内,能够被反复调用。
四、创建存储过程的语法:
Create [Or Replace] Procedure 存储过程名[(参数列表)] Is|As PL/SQL块。
说明:参数列表形式为 参数名 [参数模式] 参数的数据类型,如果有多个参数,每个参数之间用,分割。
参数模式:包括三种,分别为in、out 、in Out,当参数模式省略时,表示该参数为in模式。
参数数据类型:此处数据类型只能写类型名,不能写长度。
Is|as后面为变量声明,不需要加declare关键字。
结束部分即可以用end;也可以用end 存储过程名;来结束。
Create Or Replace Procedure p_1 Is v_deptname Varchar2(20) :='c'; Begin Insert Into dept Values(16,v_deptname,'newyork'); Commit; End p_1;
五、存储过程的调用。
1、在另一个块里调用:直接写存储过程名,传递相应的参数即可。
2、在Sql-plus里调用:exec 存储过程名(参数列表);
六、 如何编辑一个存储过程
1、可以直接sql-window写一个,写完之后按F8,查看是否有编译错误。
2、通过new-program window-Procedure来创建,写完之后按F8编译,如果有编译错误,在存储过程名
上点击右键,edit修改,重新编译。
3、直接通过command_window创建,如果有编译错误,执行show errors命令查看。
七、存储过程的三种参数模式:
in:默认模式,相当于一个常数,该模式的参数在存储过程中不能被修改。在参数列表中可以指定默认值。
Out:该模式的参数相当于一个变量,不可以在参数列表中指定默认值。
In Out:该模式的参数相当于一个初始化的变量,不可以在参数列表中指定默认值。
练习:
1、创建一个存储过程,该存储过程的功能是通过指定的员工编号及工资,
更新相应编号的员工工资,在原基础上增加,并把更新后的员工工资返回。
Create Or Replace Procedure raise_sal3(p_empno emp.empno%Type,p_sal In Out emp.sal%Type) Is Begin Update emp Set sal = sal + p_sal Where empno = p_empno; Select sal Into p_sal From emp Where empno = p_empno; End;
2、写一个匿名块,调用上述存储过程。
Declare v_sal emp.sal%Type; Begin v_sal :=200; raise_sal3(7788,v_sal); dbms_output.put_line(v_sal); End;
八、调用存储过程时传递参数的方式。
1、按照位置方式传递。
2、按名称方式传递。
Declare v_sal emp.sal%Type; Begin v_sal :=200; raise_sal3(p_sal => v_sal,p_empno => 7788); dbms_output.put_line(v_sal); End;
3、组合方式传递:第一个参数按照位置传递,其余参数按照名称方式传递。
Declare v_sal emp.sal%Type; Begin v_sal :=200; raise_sal3(7788,p_sal => v_sal); dbms_output.put_line(v_sal); End;
练习:
1、为部门表添加一个字段maxnum,整型,该字段表示部门编制。
Alter Table dept Add maxnum Number;
2、为该字段赋予不同的值。
Select * From dept For Update
3、创建一个存储过程add_emp,该存储过程实现添加员工的功能,参数为emp%rowtype类型。
当某个部门的员工数超过该部门的最大编制时,使用异常处理方式提示用户"该部门人数编制已满,不能再添加员工"。
Create Or Replace Procedure add_emp(p_emp emp%Rowtype) Is v_maxnum Number; v_currnum Number; e_too_many Exception; Begin Select maxnum Into v_maxnum From dept Where deptno = p_emp.deptno;--查询部门编制 Select Count(empno) Into v_currnum From emp Where deptno = p_emp.deptno ;--查询部门当前人数 If v_currnum >=v_maxnum Then Raise e_too_many; Else Insert Into emp Values(p_emp.empno,p_emp.ename,p_emp.job,p_emp.mgr,p_emp.hiredate,p_emp.sal,p_emp.comm,p_emp.deptno); dbms_output.put_line('录入成功'); End If; Exception When e_too_many Then dbms_output.put_line('该部门编制已满'); End;
4、写一个存储过程call_addemp,验证上述存储过程的正确性。
Create Or Replace Procedure call_addemp Is v_emp emp%Rowtype; Begin Select * Into v_emp From emp Where empno= 7788; v_emp.empno := 7789; add_emp(v_emp); End;
九、本地子程序
:声明在另一个存储过程中的存储过程,使用procedure 存储过程名 方式来声明,本地子程序的有效范围是
被限制在他们定义的父块中。而且必须写在所有的变量声明之后。
十、删除存储过程。
练习:编写一个简单的Oracle存储过程:要求根据主管编号显示出其直接下级员工和所有下级员工(提示:入参为主管编号)
Create Or Replace Procedure show_nextlevel(p_empno emp.empno%Type) Is Cursor emp_cursor Is Select Level,ename From emp Where empno <> p_empno Start With empno = p_empno Connect By Prior empno=mgr ; Begin For emp_record In emp_cursor Loop If emp_record.Level =2 Then dbms_output.put_line('员工'||emp_record.ename||'为直接下级'); Else dbms_output.put_line('员工'||emp_record.ename||'为间接下级'); End If; End Loop; End; --调用存储过程块 Begin show_nextlevel(p_empno => 7839); End;
发表评论
-
日期差的天时分秒表示SQL(转)
2015-01-09 14:47 2419文章出自:http://blog.csdn.net/ ... -
MySQL分组后排序的问题(转)
2014-05-21 11:31 1718文章出自:http://zhidao.baidu.co ... -
在oracle的decode函数中实现like相同操作
2014-03-28 14:37 10897在oracle的decode函数中不能使用like操作 ... -
45个非常有用的Oracle查询语句分享
2014-03-17 13:41 961文章出自:http://tech.it168.com ... -
能使 Oracle 索引失效的七大限制条件
2014-03-17 13:11 6219文章出自:http://tech.it168.com/ ... -
oracle存储过程异常处理及时间戳变量类型
2014-03-15 18:02 3110下面通过一个简单 ... -
对只转发结果集的无效操作: isLast
2014-03-13 14:19 2720在遍历结果集的时候,用rs.isLast()来判断是否到达 ... -
oracle连接DBLINK报错:ORA-12154: TNS:could not resolve service name的解决办法(转)
2014-01-13 15:56 3150文章出自:http://blog.csdn.net/x ... -
查看oracle enterprise manager端口的途径(转)
2014-01-13 12:04 1327文章出自:http://www.myexception ... -
利用java导入导出excel到oracle数据库
2013-12-05 14:46 8638用到的JAR包如下(可以直接到POI官网上下载也可以 ... -
WebSphere+Oracle乱码问题解决
2013-11-26 15:01 1573环境介绍: Web容器(中间件):W ... -
v$session 的权限(转)
2013-11-15 13:32 1828文章出自:http://blog.csdn.net/x ... -
Oracle中查看所有表和字段(转)
2013-08-29 11:48 1251文章出自以下两个网站: Oracle中查看所有表和字 ... -
oracle杀掉正在运行的存储过程
2013-08-28 16:05 3260本篇文章主要介绍如何kill掉一个正在运行的存储过程, ... -
oracle中v$access视图介绍
2013-08-28 15:49 8473如果想了解如果杀掉一个正在运行的存储过程,请查询这篇 ... -
oracle 临时表介绍(整合)
2013-08-27 11:14 2475在工作中用临时表从A库到B库导入LOB(大)字段,用临 ... -
oracle 的连接操作(left jion,right jion, full jion)
2013-06-14 12:52 25351.创建测试表 -- Create table ... -
如何查看oracle的版本信息(转)
2013-05-07 08:30 1214文章出自: http://blog.sina.com. ... -
oracle触发器实践(增,改,删)
2013-04-27 14:02 1388实现对某个表的增改删的监控操作,并记录到另一个表中. ... -
Oracle如何正确删除archivelog文件(转)
2013-04-10 13:29 2951文章出自 : http://cac ...
相关推荐
"PL/Sql_Demo_Oracle"标题表明这是一个关于PL/SQL在Oracle环境下的示例集合,可能包含了各种实用的代码片段、存储过程、函数和其他数据库操作的实例。 在Oracle数据库中,PL/SQL用于编写存储过程、函数、触发器、...
PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个结合了SQL语句和过程式编程语言的编程环境。它主要用于管理和控制Oracle数据库,是Oracle数据库开发的核心工具之一。PL/SQL...
PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库系统中的一个重要的编程组件,它结合了SQL(结构化查询语言)的查询功能与过程性编程语言的特点。PL/SQL允许开发者编写复杂的数据库...
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与高级编程语法相结合,用于在Oracle数据库环境中构建复杂的业务逻辑和应用程序。Oracle8是PL/SQL的一个早期版本,尽管现在可能已经更新到了更高版本,...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
1. **PL/SQL简介**:PL/SQL是Oracle数据库的内置编程语言,用于创建存储过程、函数、触发器和包。它的语法基于SQL,但增加了流程控制、异常处理和数据类型等特性。 2. **变量和数据类型**:PL/SQL支持多种数据类型...
### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
Oracle PL/SQL是Oracle数据库系统中的重要组成部分,它是一种结合了SQL查询语言和过程化编程元素的编程语言,专门用于在Oracle环境中进行数据库管理和应用程序开发。这个“Oracle PL-SQL.rar”压缩包提供了针对初学...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...
PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...
PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...
- **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL查询的基础上添加控制流语句、变量定义、错误处理等特性。 - **环境搭建与配置**:...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...
在IT行业中,Oracle数据库系统是企业级数据管理的首选,而PL/SQL是Oracle数据库的内置编程语言,用于实现复杂的数据库操作和业务逻辑。本文将深入探讨如何利用PL/SQL结合Web技术来构建一个功能丰富的网上商店。我们...
PL/SQL是Oracle专为数据库管理设计的一种过程化编程语言,它结合了SQL查询语言的威力与高级编程语言的灵活性,使得数据库开发者能够创建复杂的应用程序逻辑。 在"Oracle Database 12c PL/SQL开发指南(第7版)"这...
PL/SQL是Oracle数据库中用于创建存储过程、函数、触发器、包等数据库对象的主要工具。第4版特别关注了在Oracle 11g环境下的新特性,如性能优化、错误处理和并发控制等。 1. **基础语法**:PL/SQL的基础包括声明变量...
Oracle PL/SQL是Oracle数据库系统中的重要组成部分,用于开发存储过程、函数、触发器等数据库对象,以及执行复杂的SQL操作。以下是对Oracle PL/SQL及其相关知识点的详细说明: 1. **Oracle数据库基础**:Oracle...
PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库管理、数据处理和业务逻辑实现更为高效。本书针对那些希望提升PL/SQL编程技能,设计和开发复杂数据库解决方案的...