调用存储过程
/**
* ProcedureTest.java
* com.exec
*
* Function: TODO
*
* ver date author
* ──────────────────────────────────
* Jun 17, 2010 程仁银
*
* Copyright (c) 2010, All Rights Reserved.
*/
package com.exec;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import com.db.DBconnect;
/**
* ClassName:ProcedureTest
* Project:
* Company: LINKAGE
*
* @author 程仁银
* @version
* @since Ver 1.1
* @Date Jun 17, 2010 1:31:17 PM
*
* @see
*/
public class ProcedureTest {
/**@author . 程仁银
* @email . 13813375172@139.com
* @createTime .Jun 17, 2010 1:31:23 PM
* @parameters .
* @description .
*/
public static void main(String[] args)
{
Connection con = null;
con = new DBconnect().getConectionByJdbc();
try {
CallableStatement cs = con.prepareCall("{call cryProcedure(?)}");
cs.setLong(1,10);
cs.execute();
con.commit();
System.out.println("执行完成 ... ");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
sql - CRY_SEQUENCES.NEXTVAL 为sequence,你也可以测试写个固定的值
CREATE OR REPLACE procedure cryProcedure(p_id IN NUMBER)
IS
v_name VARCHAR(20);
BEGIN
SELECT col1 INTO v_name FROM cry WHERE ID=p_id;
INSERT INTO cry(ID,col1)values(CRY_SEQUENCES.NEXTVAL,v_name);
END cryProcedure;
----------------------------------------------------------
另外一个例子
private void call(long xh, String flag) {
DBConn db = new DBConn();
Connection conn = db.getConn();
CallableStatement cs = null;
try {
cs = conn.prepareCall("{CALL PTR_MO_BARCODE_SEND(?,?)}");
cs.setLong(1, xh);
cs.setString(2, flag);
cs.execute();
conn.commit();
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
if (cs != null) {
try {
cs.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
db.freeConn();
}
}
CREATE OR REPLACE PROCEDURE PTR_MO_BARCODE_SEND(
V_xh in number,
V_FLAG IN VARCHAR2 --查到1,没有值查不到-1
) IS
v_dn varchar2(13);
v_order_id number(16);
--扣减积分过程,并下发条码
BEGIN
select CONTENT into v_order_id from Tm_BARCODE_SEND
where xh=v_xh;
insert into TT_BARCODE_SEND
(XH,
SP_ID,
SP_ORDER_NUMBER,
BUSINESS_CODE,
LOCATION_ID,
PHONE_REQ,
PHONE_RECE,
PHONE_TYPE,
VALID_TIME,
OUT_SMIL_ID,
MEMO,
SEND_TYPE,
CONTENT,
INFO_TITLE,
NOTES,
MMS_NOTES,
ADDITION_NUMBER,
PRO_ID,
FROMID,
OP_DATE,
DO_FLAG,
DO_DATE,
DO_REMARK
)
select
XH,
SP_ID,
SP_ORDER_NUMBER,
BUSINESS_CODE,
LOCATION_ID,
PHONE_REQ,
PHONE_RECE,
PHONE_TYPE,
VALID_TIME,
OUT_SMIL_ID,
MEMO,
SEND_TYPE,
CONTENT,
INFO_TITLE,
NOTES,
MMS_NOTES,
ADDITION_NUMBER,
PRO_ID,
FROMID,
OP_DATE,
V_FLAG,
sysdate,
''
from
TM_BARCODE_SEND
where xh=v_xh;
IF V_FLAG<>1 THEN
--下行短信提醒
select PHONE_REQ into v_dn from TM_BARCODE_SEND where xh=v_xh;
p_send_sms(
'HELP',
v_dn,
'',
'尊敬的客户,对不起,条码发送失败,请您联系10086客服人员进行条码重发!'
);
update td_order_user set is_send=1,send_state=1 where order_id=v_order_id;
END IF;
update td_order_user set is_send=1,send_state=0 where order_id=v_order_id;
--删除表
DELETE FROM TM_BARCODE_SEND WHERE XH=V_XH;
commit;
exception
when others then
dbms_output.put_line(sqlerrm);
rollback;
END PTR_MO_BARCODE_SEND;
分享到:
相关推荐
综上所述,本Demo通过.NET Framework 4.5和Entity Framework展示了如何在C#环境下调用Oracle存储过程,获取单个或多个结果集。这对于开发人员来说,极大地简化了与Oracle数据库的交互,提高了开发效率。在实际项目中...
当使用VB与Oracle进行交互时,有时候我们需要调用Oracle中的存储过程,尤其是那些带有返回值的存储过程。下面将详细介绍如何在VB中实现这一操作。 首先,为了在VB中与Oracle数据库通信,我们需要引入Oracle的数据...
3. **PL/SQL编程**:学习如何编写存储过程、函数、触发器等,以实现数据库的业务逻辑。 4. **索引与约束**:了解不同类型的索引(B树、位图等)以及非空、唯一、外键等约束的作用和创建方法。 5. **视图与物质化...
它支持大规模数据存储,并且有丰富的功能,适合企业级应用。 三、Hibernate与Oracle的集成 1. 配置Hibernate - `hibernate.cfg.xml`配置文件:在其中设置Oracle数据库的相关参数,包括JDBC驱动类、URL、用户名和...
### Oracle存储过程基本用法详解 #### 一、概述 Oracle 存储过程是一种数据库对象,可以在其中封装一系列 SQL 语句和 PL/SQL 块。存储过程可以接受输入参数,返回输出参数,并且可以执行复杂的逻辑操作。通过创建...
然后我们定义了一个同名的Oracle存储过程,指定调用`JavaDemo1.main()`方法。 第二种方法是使用外部的class文件来创建存储过程。这种方式需要先将编译好的Java类文件放在Oracle服务器的一个目录下,然后创建一个...
本示例将深入探讨如何使用Tomcat服务器、Servlet、Oracle数据库和JDBC(Java Database Connectivity)来实现一个简单的用户登录功能。下面,我们将详细讲解这个过程中的关键知识点。 1. **Tomcat服务器**: Tomcat...
在本例中,我们将创建两个简单的Oracle存储过程:`ADDDEPT` 和 `TESTB`。 1. **ADDDEPT** 存储过程:用于向 `DEPT` 表中插入一条新记录。 ```sql CREATE OR REPLACE PROCEDURE ADDDEPT(DEPTNO IN NUMBER, DNAME ...
Oracle LoginDemo是一个基于C#语言开发的简单应用程序,主要用于演示如何使用C#连接到Oracle数据库。这个小程序包含必要的代码示例和可能的数据文件,帮助开发者理解并实现Oracle数据库的登录功能。下面我们将深入...
更深入地,你还可以探索如何使用事务管理、分页查询、复杂SQL操作、存储过程等高级特性。同时,确保你的应用程序具有良好的错误处理和日志记录机制,以便在遇到问题时能够快速定位和解决。 在这个名为`demo`的项目...
在这个例子中,`JDBCDemo`可能包含了如下关键步骤: 1. **加载驱动**:通过`Class.forName("oracle.jdbc.driver.OracleDriver")`加载Oracle的JDBC驱动。 2. **建立连接**:使用`DriverManager.getConnection(url, ...
### Oracle 存储过程、游标与触发器基础教程 #### 一、Oracle 存储过程简介 在 Oracle 数据库中,存储过程是一种数据库对象,它由 SQL 和 PL/SQL 语句组成,并且可以在数据库服务器上编译并存储。存储过程可以提高...
在这个demo中,Oracle作为数据源,存储了用于生成报表的数据。开发者需要配置JDBC驱动,以便Java程序能连接到Oracle数据库,并执行SQL查询来获取报表所需的数据。 3. **Eclipse IDE** Eclipse是一款强大的开源Java...
例如,你可以在这里找到关于SQL语句的使用、存储过程的编写、数据库性能优化以及故障排查的方法。此外,这些文档也会包含新版本的更新特性和改变,帮助开发者和DBA(数据库管理员)保持最新的技术知识。 2. **demo*...
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以让你更专注于SQL本身,使得你能更好地写出高效、简洁的代码。 ...
这两种方法都能有效地从JSON字符串中提取属性值,但`REGEXP_REPLACE()`更适用于复杂或有规律的JSON格式,而基于`instr()`的方案则适用于简单的字符串处理,且在某些情况下可能更高效。然而,Oracle从12c版本开始提供...
总结来说,"Extjs 项目Demo"是一个展示如何使用ExtJS 3.2构建数据驱动的Web应用的例子,涵盖了数据查询分页、CRUD操作、与Webservice的集成以及可能的Oracle数据库操作。这个项目可以作为学习ExtJS的基础,帮助...
这个Demo是初学者学习Java Web应用开发和理解数据库交互的一个好例子。在这个项目中,我们将深入探讨以下几个关键知识点: 1. **Java连接池**:在Java应用程序中,特别是Web应用,数据库连接的创建和释放频繁进行,...
"realthinclient-三层数据库的demo"包含了一系列示例,这些例子演示了RTC如何与服务器进行通信,如何调用业务逻辑,以及如何处理数据库查询和更新。通过阅读和分析这些源代码,开发者可以了解RTC的实现细节,例如...