来源:http://www.wyjava.com/html/2012/database_oracle_0206/29.html
假如我做完一个操作后,我要将某表的某条数据移到备份表中去,然后将这条数据从本表中删除。对于这种操作,那么一起成功,那么一起失败。一...
假如我做完一个操作后,我要将某表的某条数据移到备份表中去,然后将这条数据从本表中删除。对于这种操作,那么一起成功,那么一起失败。
一般对于这种情况我们会用存储过程实现。
存储过程确实可以。
但是在oracle中还有另外一种方法也可以实现。
在oracle中可以将多条SQL写在一起,以分号结束。
语法
begin
SQL语句1;
SQL语句2;
end;
实例
在JAVA程序中的实现
/**
* 备份彩信发送数据
*/
public void reservedMmsSubmitMmsc(MmsSubmitMmsc mmssubmitmmsc) {
// 备份彩发送数据语句
String strReserved = "begin insert into smscom.MMS_SUBMIT_MMSC_BAK values(?,?,?,?,?,?,?,?,?,?,?);delete smscom.MMS_SUBMIT_MMSC where id=?; end;";
Connection connection = null;
PreparedStatement ps = null;
try {
connection = ConnectionPool.getConnection();
ps = connection.prepareStatement(strReserved);
ps.setInt(1, mmssubmitmmsc.getId());
ps.setString(2, mmssubmitmmsc.getMsgId());
ps.setInt(3, mmssubmitmmsc.getChargedParty());
ps.setString(4, mmssubmitmmsc.getMobile());
ps.setString(5, mmssubmitmmsc.getFeeMobile());
ps.setString(6, mmssubmitmmsc.getServiceCode());
ps.setString(7, mmssubmitmmsc.getSenderAddresss());
ps.setString(8, mmssubmitmmsc.getLinkId());
ps.setDate(9, mmssubmitmmsc.getMmsMtTime());
ps.setString(10, mmssubmitmmsc.getDeliveryReport());
ps.setInt(11, mmssubmitmmsc.getMmsmmscmainattach().getId());
ps.setInt(12, mmssubmitmmsc.getId());
ps.execute();
} catch (SQLException sqle) {
Debug
.outInfo("[MMSCDataAccess],reservedMmsSubmitMmsc(),备份彩信发送信息失败 "
+ sqle);
} finally {
PublicFunction.closeConnection(connection, ps);
}
}
这个方法就实现了以上功能。一个操作实现了多个功能。 在其他语言操作方式差不多,只是连接语句等不能。
分享到:
相关推荐
通过以上两个示例可以看出,在Oracle存储过程中实现动态SQL语句的关键在于利用`EXECUTE IMMEDIATE`动态执行SQL语句以及通过创建包的方式来实现更为复杂的动态数据处理逻辑。这两种方法不仅提高了代码的灵活性,还...
这条SQL语句通过连接`v$session`和`v$sqlarea`两个视图来获取当前会话中执行的SQL语句及其完整文本。其中`v$session`包含了所有活动会话的信息,而`v$sqlarea`则存储了最近执行过的SQL语句的元数据。通过`a.sql_...
两种方法各有特点,SQL Server的存储过程封装了复杂的逻辑,使得代码更易于管理和复用,同时避免了多次执行相同查询的开销。而Oracle的分页SQL语句更为简洁,适合在不支持存储过程或者简单场景下使用。但需要注意的...
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; ...
存储过程是一组预先编译好的 SQL 语句,它们可以作为一个单元执行,减少了网络流量并提高了性能。在 Oracle 中,你可以定义参数,创建自定义的业务逻辑,甚至控制事务处理。存储过程的使用有助于代码重用,降低系统...
在Oracle数据库中,存储过程是一种重要的数据库对象,它可以包含一系列SQL语句和控制流语句,用于实现复杂的业务逻辑处理。存储过程不仅可以提高应用程序性能,还可以确保数据的一致性和安全性。批量提交是存储过程...
然而,在上面的例子中,我们没有得到任何结果,这是因为`V$SQL`视图通常只保留最近使用的SQL语句,而且只有当SQL语句被多次执行或执行时间较长时,才会被记录。如果你刚刚执行过该SQL语句并且`V$SQL`视图中还没有...
当SQL语句进入Oracle的库缓存后,为了确保其能够被正确执行,Oracle会经历一系列的检查和准备过程。这一阶段主要涉及以下几个步骤: 1. **语法检查**:检查SQL语句的拼写是否正确以及词序是否合理。这是最基本也是...
INSERT_语句生成器.sql 一个存储过程- INSERT_语句生成器.sql 生成表INSERT插入语句SQL,INSERT_语句生成器.sql
Oracle 存储过程是一种可以在 Oracle 数据库中创建和执行的程序单元,它可以完成多种操作,如数据处理、数据报表、数据统计等。下面是 Oracle 存储过程的基本语法。 创建存储过程 CREATE OR REPLACE PROCEDURE ...
存储过程是一种可以重复使用的数据库对象,旨在将多个SQL语句组合成一个单元,以便实现复杂的业务逻辑。 创建存储过程的基本语法 CREATE OR REPLACE PROCEDURE 存储过程名 IS BEGIN NULL; END; 存储过程的组成...
Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的可重用代码段。在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储...
当一条SQL语句首次执行并解析后,其执行计划会被存储在系统全局区域SGA的共享池中,供后续相同的SQL语句复用,避免重复解析带来的资源消耗。共享SQL语句的关键在于SQL文本的严格匹配,包括空格、换行等细节。通过...
在Oracle数据库环境中,存储过程是一种预编译的代码块,用于执行特定的数据库操作,如数据的添加、修改、删除和查询。它们提供了一种高效且安全的方式来处理数据,同时还可以减少网络流量并提高应用程序的性能。下面...
这样,开发人员就可以通过调用存储过程来执行一系列操作,而不是单独编写多条SQL语句,提高了代码的可读性和执行效率。 存储过程的优势在于: 1. 代码复用:一旦定义,可以在多个地方调用,减少代码重复。 2. 安全...
3. 减轻网络流量:如果某一操作涉及的SQL语句被组织成存储过程,那么客户端只需调用该存储过程,网络中传递的只是调用语句,而不是多条SQL语句,从而减少了网络流量,降低了网络负载。 4. 安全机制的实现:系统管理...
### SQL Server与Oracle存储过程语法转换关键点 #### 变量声明与使用 - **SQL Server**中的变量必须以`@`符号开头,而在**Oracle**中则没有这个要求。 - **SQL Server**的语句不需要以分号作为结束符,而**Oracle**...
Oracle存储过程是预编译的SQL语句集合,它可以提高执行效率,减少网络通信,并且能够封装复杂的业务逻辑。 首先,我们需要理解C++与Oracle数据库交互的基本原理。通常,这会通过一个名为ODBC(Open Database ...
- **定义**:存储过程(Stored Procedure)是在数据库中预编译的一组SQL语句集合,它可以被当作一个单独的对象来调用,只需要指定存储过程的名字及参数(如果有的话)。在Oracle中,存储过程是一个重要的数据库对象...
执行多条SQL语句,实现数据库事务。 执行带一个存储过程参数的的SQL语句。 向数据库里插入图像格式的字段 执行一条计算查询结果语句,返回查询结果 执行查询语句,返回MySqlDataReader 执行查询语句,返回DataSet ...