存储过程
1 什么是存储过程?
用于在数据库中完成特定的操作或者任务。是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用。
2 存储过程的参数模式
存储过程的参数特性:
IN类型的参数 OUT类型的参数 IN-OUT类型的参数
值被 传递给子程序 返回给调用环境 传递给子程序
返回给调用环境
参数形式 常量 未初始化的变量 初始化的变量
使用时 默认类型 必须明确指定 必须明确指定
3 无参数存储过程的使用:
CREATE OR REPLACE PROCEDURE 过程名 [(parameter,...)]
IS
定义变量
Begin
Plsql程序
End;
例:创建一个存储过程,用于向数据库中插入一条记录。
第一步:创建
CREATE OR REPLACE PROCEDURE pro_1
IS
Begin
insert into person values (11,'aa','aav');
End;
第二步:在sql*plus中执行该过程
exec pro_1;
第三步:通过JDBC使用存储过程。
private Connection conn = null;
private ResultSet rs = null;
private CallableStatement state = null;
//调用一个无参数的存储过程
public void testPro()
{
conn = Tools.getConnection();
try {
state = conn.prepareCall("{call pro_1}");
state.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
4 带有IN类型参数的存储过程的使用。
例:创建一个存储过程,用于向数据库中插入一条记录。
第一步:创建
CREATE OR REPLACE PROCEDURE pro_2(id number,name varchar2,email varchar2)
IS
Begin
insert into person values (id,name,email);
End;
第二步:在sql*plus中执行该过程
exec pro_2(12,'aaa','aaa');
第三步:通过JDBC使用存储过程。
//使用一个带有 IN 类型参数的存储过程
public void testPro_in(int id,String name,String email)
{
conn = Tools.getConnection();
try {
state = conn.prepareCall("{call pro_2(?,?,?)}");
state.setLong(1, id);
state.setString(2, name);
state.setString(3, email);
state.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
5 带有out类型参数的存储过程的使用。
例:创建一个存储过程,用于返回数据库中的Person表的总行数。
第一步:创建
CREATE OR REPLACE PROCEDURE pro_3(num out number)
IS
mynum number;
Begin
select count(*) into mynum from person;
num := mynum;
End;
或者
CREATE OR REPLACE PROCEDURE pro_3(num out number)
IS
Begin
select count(*) into num from person;
End;
第二步:在sql*plus中执行该过程
declare
a number;
begin
pro_3(a);
dbms_output.put_line(a);
end;
第三步:通过JDBC使用存储过程。
public void testPro_out()
{
conn = Tools.getConnection();
try {
state = conn.prepareCall("{call pro_3(?)}");
state.registerOutParameter(1, Types.NUMERIC);
state.execute();
int num = state.getInt(1);
System.out.println(num);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
6 带有in-out类型参数的存储过程的使用。
创建:
CREATE OR REPLACE PROCEDURE pro_4(num in out number)
IS
a number := 100;
Begin
num := a*num;
End;
在sql*plus中执行该过程
declare
a number := 12;
begin
pro_4(a);
dbms_output.put_line(a);
end;
练习:
已知有一员工表,请编写一个存储过程,可以通过部门ID得到该部门员工的平均工资。
分享到:
相关推荐
存储过程是一种数据库对象,它是由一系列SQL语句组成的预编译的程序块,存储在数据库中,可以通过调用的方式执行。在Oracle数据库中,存储过程主要采用PL/SQL语言编写。相比传统的SQL命令,存储过程具有以下优势: ...
通过以上方法,我们可以系统地调试PLSQL存储过程,找出隐藏的问题,提升代码质量和效率。调试是软件开发过程中的重要环节,对于理解复杂的数据库逻辑尤其关键。熟练掌握PLSQL调试技巧,能帮助我们快速定位和解决问题...
6. **调用和执行存储过程** 调用存储过程通常有两种方式:一是通过数据库客户端工具如SQL*Plus或Oracle SQL Developer;二是通过应用程序,如Java、Python等,利用JDBC或其他数据库连接库。 7. **存储过程的维护**...
- **执行部分 (BEGIN-END)**:这是程序的核心部分,包含实际的操作指令,如过程调用、SQL 语句执行等。例如: ```sql BEGIN v_name := 'Hello World'; DBMS_OUTPUT.PUT_LINE(v_name); END; ``` - **异常处理...
- **存储过程作用:** 在Oracle中,存储过程可以用于封装这些规则和逻辑,使之成为可重用的组件。 **创建权限:** - **CREATE PROCEDURE权限:** 允许用户创建存储过程。 - **CREATE ANY PROCEDURE权限:** 允许...
- **重用性**:存储过程可以被多个应用程序共享和调用。 #### 二、创建与管理存储过程 ##### 创建存储过程 要创建一个存储过程,首先需要具备`CREATE PROCEDURE`权限。如果希望其他用户也能使用该存储过程,则还...
PLSQL jdbc调用存储过程(入门)
PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一种编程语言,它结合了SQL的查询功能和过程式编程语言的控制结构。在PL/SQL中,存储过程是一种预编译的代码单元,可以包含SQL语句、...
在调用时不需要提供初始值,存储过程执行完毕后,其值会被设置并返回给调用者。 - **IN-OUT类型参数**:既能传入又能传出,调用时可以设置初始值,存储过程可以修改这个值,并在返回时提供更新后的值。 3. **无...
存储过程因其高效执行、事务处理能力以及安全性,在数据库应用程序中被广泛应用。特别是使用Oracle数据库时,PL/SQL(一种专为Oracle设计的过程化语言)能够提供更高的性能和更低的网络负载。在实际开发过程中,当...
在Oracle数据库中,PL/SQL(Procedural Language/Structured Query Language)是一种结合了SQL语句和过程式编程语言的特性,用于编写数据库应用程序的语言。本资料主要关注PLSQL编程以及在Oracle中创建和使用存储...
Oracle PlSql 存储过程是 Oracle 数据库中的一种编程语言,用于实现复杂的业务逻辑和数据处理。下面是对 Oracle PlSql 存储过程的详细介绍: 一、 Oracle 存储过程目录 Oracle 存储过程目录是指 Oracle 数据库中...
”类型的示例,通常用于介绍如何在PL/SQL中编写和调用存储过程。 2. `2-var.sql`: 变量在PL/SQL中是必不可少的,此文件可能包含关于声明、初始化和操作变量的代码。在PL/SQL中,我们可以声明多种类型的变量,如数值...
在本自学资料中,我们将深入探讨PL/SQL的基本概念、结构、流程控制、运算符与表达式、游标、异常处理、存储过程和函数、包以及触发器。 首先,PL/SQL的全称是Procedure Language & Structured Query Language,它是...
### PL/SQL批量执行多个SQL文件和存储过程 在日常的数据库管理与开发工作中,经常需要执行大量的SQL脚本或调用多个存储过程。对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库...
存储过程是预编译并存储在数据库服务器上的SQL程序,可以在应用程序中通过调用其名称来执行一系列复杂操作。存储过程提高了性能,因为它们只需要编译一次,并且可以通过参数传递值,从而实现代码重用性和灵活性。 #...
7. 使用Java调用Oracle存储过程分为三种情况:无返回值的过程、有单个返回值的过程和返回列表的过程。 **用Java调用Oracle存储过程总结** 1. 无返回值的存储过程:使用CallableStatement的`execute()`方法执行。 2....
存储过程是一组预编译的SQL和PLSQL语句,可以被多次调用,提高了代码复用性和执行效率。Oracle提供了丰富的文档和资源来帮助开发者: - **Oracle® Database PL/SQL User's Guide and Reference** 和 **Oracle® ...
实验报告应详细记录每一步的操作和结果,包括创建表、编写和执行存储过程的过程。 通过这个实验,我们可以学习到: - 如何使用PL/SQL声明变量和游标。 - 如何编写和调用存储过程。 - 如何在PL/SQL中处理条件和异常...