存储过程
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;
分享到:
相关推荐
#### 三、编写存储过程调用 WebService ##### 3.1 创建 WebService 类型的扩展存储过程 在 SQL Server 中,可以通过创建一个扩展存储过程来调用 Web Service。具体步骤如下: 1. **定义 WebService 类型**:首先...
首先,`Oracle存储过程`是一种预编译的SQL和PL/SQL代码集合,可以被多次调用以执行特定的任务。它们提高了性能,降低了网络流量,并简化了数据库管理。在存储过程中调用外部脚本可以扩展Oracle的功能,比如自动化...
4. **DataWindow对象**:如果你想要在DataWindow中使用存储过程,可以设置DataWindow的SQL源为存储过程,然后在适当的方法(如RowChange, Fetch等)中调用执行。 其次,关于**存储过程的创建**,在提供的描述中,...
6. 保存和运行:保存 Mapping,之后可以运行 Mapping,以便执行调用存储过程的操作。 Informatica 调用存储过程的优点 使用 Informatica 调用存储过程可以带来多种优点,例如: * 提高数据集成速度:使用存储过程...
在Java编程中,调用...理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题,记得查阅相关文档或寻求社区支持。
在Java编程中,调用存储过程是连接数据库并执行预定义SQL代码的一种常见方式。存储过程是由数据库管理系统(如MySQL, Oracle, SQL Server等)编译并存储的一组操作,可以包含复杂的逻辑、条件判断、循环等,提高数据...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
### 存储过程调用详解 #### 一、目的与要求 存储过程是数据库中预编译好的SQL脚本,可以提高数据处理效率并增强安全性。本次内容的主要目的是让学习者能够熟练掌握如何创建、调用及删除存储过程,并通过实践加深对...
hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
在VB6.0中调用SQL Server的存储过程是VB开发者经常遇到的问题,本文将详细介绍如何在VB6.0中调用SQL Server的存储过程,并对存储过程的优点和使用方法进行了详细的解释。 首先,存储过程是一种封装方法,用于重复...
ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...
在数据库管理中,存储过程(Stored Procedure)是一种预编译的SQL代码集合,它封装了特定的功能,并在需要时由应用程序调用执行。存储过程在大型数据库系统中扮演着重要角色,因为它能提高性能、增强安全性、减少...
本文详细介绍了如何使用C#语言连接Oracle数据库,并演示了如何执行基本的查询操作和调用存储过程。通过这些知识点的学习,可以帮助初学者更好地理解和掌握在.NET框架下进行Oracle数据库操作的方法和技术。
Dapper 是一个轻量级的 ORM(对象关系映射)框架,它主要用于简化 .NET 应用程序中数据库操作的代码...通过利用 `Execute()`、`ExecuteScalar()` 和 `Query()` 方法,我们可以根据需求灵活地调用和处理存储过程的输出。
存储过程是一种预先编译好的SQL脚本,存储在数据库中,可以被应用程序多次调用执行,以提高性能和代码复用性。 ### 描述:“后台调用带参数的存储过程,返回DataSet类型数据” 这段描述进一步明确了文章的主题:即...
总的来说,这主要包括三个方面的工作:定义XML映射文件中的存储过程参数映射和调用方式、实现Java层的DAO接口以及在数据库中创建对应的存储过程。这些步骤结合起来,使得开发者能够在Ibatis框架下灵活高效地使用存储...
如果需要在启动时执行多个过程,但不需要并行执行,可以指定一个过程作为启动过程,让该过程调用其它过程。这样就只占用一个连接。 在启动时恢复了最后一个数据库后,即开始执行存储过程。若要跳过这些存储过程的...