`
chengyu2099
  • 浏览: 471203 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

oracle 存储过程 例子 简单demo

    博客分类:
  • SQL
阅读更多
调用存储过程
/**
 * 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;

分享到:
评论

相关推荐

    .Net框架下,Oracle使用存储过程获取数据集Demo

    综上所述,本Demo通过.NET Framework 4.5和Entity Framework展示了如何在C#环境下调用Oracle存储过程,获取单个或多个结果集。这对于开发人员来说,极大地简化了与Oracle数据库的交互,提高了开发效率。在实际项目中...

    VB 调用oracle 带返回值的存储过程

    当使用VB与Oracle进行交互时,有时候我们需要调用Oracle中的存储过程,尤其是那些带有返回值的存储过程。下面将详细介绍如何在VB中实现这一操作。 首先,为了在VB中与Oracle数据库通信,我们需要引入Oracle的数据...

    oracle9i主目录下demo文件夹下各种建demo脚本

    3. **PL/SQL编程**:学习如何编写存储过程、函数、触发器等,以实现数据库的业务逻辑。 4. **索引与约束**:了解不同类型的索引(B树、位图等)以及非空、唯一、外键等约束的作用和创建方法。 5. **视图与物质化...

    HIbernate与oracle数据库应用例子

    它支持大规模数据存储,并且有丰富的功能,适合企业级应用。 三、Hibernate与Oracle的集成 1. 配置Hibernate - `hibernate.cfg.xml`配置文件:在其中设置Oracle数据库的相关参数,包括JDBC驱动类、URL、用户名和...

    oracle存储过程基本用法

    ### Oracle存储过程基本用法详解 #### 一、概述 Oracle 存储过程是一种数据库对象,可以在其中封装一系列 SQL 语句和 PL/SQL 块。存储过程可以接受输入参数,返回输出参数,并且可以执行复杂的逻辑操作。通过创建...

    Java下使用Oracle存储过程(详解)第1/3页

    然后我们定义了一个同名的Oracle存储过程,指定调用`JavaDemo1.main()`方法。 第二种方法是使用外部的class文件来创建存储过程。这种方式需要先将编译好的Java类文件放在Oracle服务器的一个目录下,然后创建一个...

    Tomcat Servlet oracle JDBC 实现登录的例子

    本示例将深入探讨如何使用Tomcat服务器、Servlet、Oracle数据库和JDBC(Java Database Connectivity)来实现一个简单的用户登录功能。下面,我们将详细讲解这个过程中的关键知识点。 1. **Tomcat服务器**: Tomcat...

    java 调用存储过程列子

    在本例中,我们将创建两个简单的Oracle存储过程:`ADDDEPT` 和 `TESTB`。 1. **ADDDEPT** 存储过程:用于向 `DEPT` 表中插入一条新记录。 ```sql CREATE OR REPLACE PROCEDURE ADDDEPT(DEPTNO IN NUMBER, DNAME ...

    Oracle LoginDemo

    Oracle LoginDemo是一个基于C#语言开发的简单应用程序,主要用于演示如何使用C#连接到Oracle数据库。这个小程序包含必要的代码示例和可能的数据文件,帮助开发者理解并实现Oracle数据库的登录功能。下面我们将深入...

    Spring boot + oracle 代码示例

    更深入地,你还可以探索如何使用事务管理、分页查询、复杂SQL操作、存储过程等高级特性。同时,确保你的应用程序具有良好的错误处理和日志记录机制,以便在遇到问题时能够快速定位和解决。 在这个名为`demo`的项目...

    gradle导入本地oracle包连接数据库

    在这个例子中,`JDBCDemo`可能包含了如下关键步骤: 1. **加载驱动**:通过`Class.forName("oracle.jdbc.driver.OracleDriver")`加载Oracle的JDBC驱动。 2. **建立连接**:使用`DriverManager.getConnection(url, ...

    orale存储过程

    ### Oracle 存储过程、游标与触发器基础教程 #### 一、Oracle 存储过程简介 在 Oracle 数据库中,存储过程是一种数据库对象,它由 SQL 和 PL/SQL 语句组成,并且可以在数据库服务器上编译并存储。存储过程可以提高...

    java水晶报表demo

    在这个demo中,Oracle作为数据源,存储了用于生成报表的数据。开发者需要配置JDBC驱动,以便Java程序能连接到Oracle数据库,并执行SQL查询来获取报表所需的数据。 3. **Eclipse IDE** Eclipse是一款强大的开源Java...

    oracle的代码和文档

    例如,你可以在这里找到关于SQL语句的使用、存储过程的编写、数据库性能优化以及故障排查的方法。此外,这些文档也会包含新版本的更新特性和改变,帮助开发者和DBA(数据库管理员)保持最新的技术知识。 2. **demo*...

    mybatis demo

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以让你更专注于SQL本身,使得你能更好地写出高效、简洁的代码。 ...

    Oracle 获取JSON字符串对象的属性值

    这两种方法都能有效地从JSON字符串中提取属性值,但`REGEXP_REPLACE()`更适用于复杂或有规律的JSON格式,而基于`instr()`的方案则适用于简单的字符串处理,且在某些情况下可能更高效。然而,Oracle从12c版本开始提供...

    Extjs 项目Demo

    总结来说,"Extjs 项目Demo"是一个展示如何使用ExtJS 3.2构建数据驱动的Web应用的例子,涵盖了数据查询分页、CRUD操作、与Webservice的集成以及可能的Oracle数据库操作。这个项目可以作为学习ExtJS的基础,帮助...

    Java登陆Demo

    这个Demo是初学者学习Java Web应用开发和理解数据库交互的一个好例子。在这个项目中,我们将深入探讨以下几个关键知识点: 1. **Java连接池**:在Java应用程序中,特别是Web应用,数据库连接的创建和释放频繁进行,...

    realthinclient-三层数据库详解(demo版)

    "realthinclient-三层数据库的demo"包含了一系列示例,这些例子演示了RTC如何与服务器进行通信,如何调用业务逻辑,以及如何处理数据库查询和更新。通过阅读和分析这些源代码,开发者可以了解RTC的实现细节,例如...

Global site tag (gtag.js) - Google Analytics