存储过程简单案例
该案例包含两部分,带返回值和不带返回值的,同时有jdbc调用存储过程的案例
1、不带返回参数的存储过程
create or replace procedure callback --回调函数名字
( --参数
id number,
name varchar
)
is
begin
insert into t_area values(id,name); --所执行具体内容
commit;
end;
--怎么查询呢?
call callback1(77,'patronli');
1.2.、在 java中通过jdbc调用
public static void add() {
java.sql.Connection conn = null;
java.sql.CallableStatement stmt = null;
try {
conn = DaoUtil.getConnection();
//语句的写法与普通的sql语句不同
stmt = conn.prepareCall("{call callback(?,?)}");
stmt.setInt(1, 21);
stmt.setString(2, "patronli");
stmt.execute(); -- 注意
} catch (SQLException e) {
e.printStackTrace();
} finally {
DaoUtil.closeAll(null, stmt, conn);
}
}
那么可能有同学要问了?这个没有返回值,我怎么知道我有没有插入成功呢? 可以将上图 “注意”处的执行方法更换为stmt.executeUpdate()就可以有受影响的行数返回,如果还想返回插入行的主键的话,请继续往下看!!!
2、带返回参数的存出过程(举两个例子,一个是返回主键id,一个是返回受影响行数)
---- 返回主键id 的
create or replace procedure callback
(
id number,
name varchar,
P_id out number--定义输出参数
)
is
begin
select seq_owners.nextval into P_id from dual;-- 从sequence中获取下一个值,并赋给pid
insert into t_area values(P_id,name);
commit;
end;
---怎么查询呢?
declare
P_id number;
begin
callback(77,'patronli',P_id);
dbms_output.put_line(P_id);
end;
-- 定义返回受影响行数的存出过程
create or replace procedure callback
(
id number,
name varchar,
P_ROWS out number
)
is
begin
insert into t_area values(id,name);
P_ROWS := SQL%ROWCOUNT;
commit;
end;
--怎么查询呢?
declare
P_ROWS NUMBER;
begin
callback(77'patronli',P_ROWS);
dbms_output.put_line(P_ROWS);
end;
2.1那么怎么在java代码中调用并获得返回信息呢?
public static void add() {
java.sql.Connection conn = null;
java.sql.CallableStatement stmt = null;
try {
conn = DaoUtil.getConnection();
// 语句的写法与普通的sql语句不同
stmt = conn.prepareCall("{call callback(?,?,?)}");
stmt.setInt(1, 77);
stmt.setString(2, "patronli");
stmt.registerOutParameter(3, OracleTypes.NUMBER);
// 注册传出参数类型
// System.out.println(stmt.executeUpdate());
stmt.execute();
System.out.println(stmt.getLong(3));// 提取传出参数
} catch (SQLException e) {
e.printStackTrace();
} finally {
DaoUtil.closeAll(null, stmt, conn);
}
}
附上oracle连接的工具类以及jar包
分享到:
相关推荐
在IT领域,数据库管理和开发是不可或缺的部分,存储过程作为数据库中的一个重要组件,它是一组为了完成特定功能的SQL语句集,预编译后存储在数据库中,可以被多次调用,提高了代码的复用性和执行效率。本文将详细...
### SQL Server 存储过程入门案例详解 #### 一、引言 在现代数据库管理系统(DBMS)中,存储过程是一种强大的工具,它允许开发者在数据库服务器上编写可重用的代码块。这些代码块主要由T-SQL语句组成,并能够接受...
例如,一个简单的存储过程可能是用于插入新记录的,如下所示: ```sql CREATE PROCEDURE InsertUser @Username VARCHAR(50), @Password VARCHAR(50) AS BEGIN INSERT INTO Users (Username, Password) VALUES (@...
在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储过程。下面将详细讲解这个主题。 首先,`c.sql`、`b.sql`和`student.sql`可能是包含存储过程定义的脚本文件。这些...
这个过程简单地打印当前系统时间,通过`DBMS_OUTPUT.PUT_LINE`函数输出到命令窗口。 2. 执行存储过程: 存储过程可以通过BEGIN/END块直接执行,或者使用`EXEC`或`CALL`命令。例如,`BEGIN out_time; END;`和`EXEC ...
以下是一个简单的存储过程示例,名为`TEST`,它接收两个输入参数`arg1`和`arg2`,并返回一个sys_refcursor类型的输出参数`v_out_result`: ```sql CREATE OR REPLACE PROCEDURE TEST (arg1 IN VARCHAR2, arg2 IN ...
例如,例1中创建了一个名为`uspGetContact`的简单存储过程,用于获取`Person.Contact`表中的第一条记录。 ```sql CREATE PROCEDURE uspGetContact AS SELECT TOP 1 ContactID, FirstName, LastName FROM Person....
例如,创建一个名为`stu_proc`的简单存储过程,用于获取`sno`为1的学生的`sname`: ```sql CREATE OR REPLACE PROCEDURE stu_proc AS pname VARCHAR2(25); BEGIN SELECT sname INTO pname FROM student WHERE sno ...
根据给定的信息,本文将详细介绍存储过程的基本概念及其在数据库管理中的应用,特别是简单存储过程的设计与实现。 ### 存储过程概述 存储过程是一种预编译的SQL语句集合,它存储在数据库服务器上,并可以作为一个...
以下是一个简单的JSP调用存储过程进行登录验证的步骤: 1. **创建存储过程**:在数据库中创建一个接受用户名和密码作为参数的存储过程,该过程会检查这些参数是否与数据库中记录匹配。例如: ```sql CREATE ...
这个例子展示了如何创建一个简单的存储过程,用于获取`Person.Contact`表中的第一条记录。使用`CREATE PROCEDURE`语句定义存储过程`uspGetContact`,然后使用`EXEC`命令执行。 2. **带参数的存储过程**(例2): ...
Java存储过程和函数是数据库操作中的重要组成部分,它们在Java应用程序与数据库交互时起到关键作用。存储过程是在数据库中预编译的SQL语句集合,而函数则返回一个值。这两种技术都允许开发者封装复杂的逻辑,提高...
在提供的示例中,我们首先定义了一个简单的存储过程`TESTA`,用于向表`HYQ.B_ID`插入一条记录。 ```sql CREATE OR REPLACE PROCEDURE TESTA (PARA1 IN VARCHAR2, PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_...
3. **MyBatis框架**:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它允许开发者编写动态SQL,使得数据库操作更加灵活和...
本案例是关于Java Web应用开发的一个实践,主要目的是学习如何通过JDBC调用SQL Server数据库中的存储过程来统计商品的总价。在这个过程中,我们将了解到如何在SQL Server中创建存储过程,以及在Java环境中如何使用...
根据提供的文件信息,我们可以深入探讨以下...以上就是基于给定文件信息对 PL/SQL 存储过程的基本介绍,包括语言特点、程序结构、数据类型与定义以及简单的示例代码。希望这些内容能够帮助初学者快速入门 PL/SQL 编程。
在本案例中,我们关注的是使用DW(DataWindow)关联存储过程来读取和更新表的操作。DataWindow是PowerBuilder中的一个核心组件,它允许开发者创建、操作和显示数据库中的数据。而存储过程,则是预编译的SQL语句集合...
这里是一个简单的创建存储过程的示例: ```sql CREATE PROCEDURE sp_name AS BEGIN -- SQL语句 END; ``` 在上述示例中,sp_name是存储过程的名称。AS关键字后跟随的是过程体,其中包含了若干条SQL语句。 2. 调用...
综上所述,SQL数据库简单案例中的学生信息管理系统通过合理设计表格、应用触发器和设置约束,实现了高效、安全且符合业务逻辑的数据管理。这不仅对理解数据库原理至关重要,也为实际的项目开发提供了实践基础。