`

存储过程Demo

阅读更多

存储过程写法:
create or replace procedure SP_Get_TicketCode(/**产生电子券号存储过程**/
   sy_name1 in VARCHAR2,
   sy_type_name in VARCHAR2,
   ticket_code  OUT  VARCHAR2/**电子券号**/
)
AS
  v_round_num  VARCHAR2(6);--6位随即码
  v_temp number;
  v_ticket_code VARCHAR2(30);
 
  begin
  v_temp := 1;
  while v_temp > 0 loop
        select round(dbms_random.value(1,1000000)) into v_round_num from dual;
       
        IF v_round_num < 10 then
           v_ticket_code := sy_name1 || TO_CHAR (SYSDATE, 'yyMMdd') || sy_type_name || '00000' || v_round_num;
        elsif v_round_num < 100 then
         v_ticket_code := sy_name1 || TO_CHAR (SYSDATE, 'yyMMdd') || sy_type_name || '0000' || v_round_num;
        elsif v_round_num < 1000 then
         v_ticket_code := sy_name1 || TO_CHAR (SYSDATE, 'yyMMdd') || sy_type_name || '000' || v_round_num;
        elsif v_round_num < 10000 then
         v_ticket_code := sy_name1 || TO_CHAR (SYSDATE, 'yyMMdd') || sy_type_name || '00' || v_round_num;
        elsif v_round_num < 100000 then
         v_ticket_code := sy_name1 || TO_CHAR (SYSDATE, 'yyMMdd') || sy_type_name || '0' || v_round_num;
        else
         v_ticket_code := sy_name1 || TO_CHAR (SYSDATE, 'yyMMdd') || sy_type_name || v_round_num;
        END IF;
        
        select count(t.TICKET_ID) into v_temp from t_ec_ticket t where t.TICKET_CODE = v_ticket_code;

        IF v_temp = 0 THEN --不重复
           ticket_code := v_ticket_code;
           exit;
        else  --重复了
           ticket_code := '';
        END IF;
  end loop;
end SP_Get_TicketCode;


java中调用存储过程的代码:
/**
* 得到电子券号
*
* @return
*/
private String getTicketCode(String syName1,String syTypeName) throws Exception {

String ticketCode = "";
Connection con = null;
CallableStatement ps = null;
try {

con = JDBCUtil.getConn();
// 调用存储过程,生成一个电子券code
ps = con.prepareCall("{call SP_Get_TicketCode(?,?,?)}");
ps.setString(1, syName1);
ps.setString(2, syTypeName);
ps.registerOutParameter(3, Types.VARCHAR);
ps.execute();

// 获得输出结果
ticketCode = ps.getString(3);
if ("-1".equals(ps.getString(3))) {
throw new ServiceException(ps.getString(3));
}
} catch (SQLException e) {
throw new SystemException(e.getMessage());
} finally {
try {
if (ps != null) {
ps.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e1) {
throw new SystemException(e1.getMessage());
}
}

return ticketCode;
}
分享到:
评论

相关推荐

    存储过程Demo.zip

    本资料“存储过程Demo.zip”提供了一个完整的存储过程示例,同时涉及到事件触发机制,这对于理解和应用MySQL存储过程至关重要。 1. **存储过程的基本概念**: 存储过程是数据库中存储的一组预编译的SQL语句,可以...

    存储过程demo

    oracle存储过程演示,临时表批量导入到正式表

    java存储过程demo

    java mysql存储过程demo

    BPEL调用SQLServer数据库存储过程Demo

    1. **创建存储过程**:在SQLServer中,使用T-SQL语句创建一个存储过程,包括输入参数(如果有的话)和执行的SQL语句。 2. **定义WSDL接口**:在WSDL文件中,定义一个操作(Operation),其消息部分(Message)描述...

    web三层无存储过程分页Demo

    "web三层无存储过程分页Demo"是一个典型的示例,它展示了如何在不使用存储过程的情况下实现Web应用程序的分页功能。下面将详细解释这个Demo所涉及的关键知识点。 1. **三层架构**: - **表现层(Presentation ...

    oracle存储过程函数生成DEMO

    在这个"Oracle存储过程函数生成DEMO"中,我们主要关注如何在Oracle数据库环境中设计、编写、测试以及调用存储过程和函数。下面将详细阐述相关知识点。 1. **存储过程**: - 存储过程是一组预先编译的SQL语句,存储...

    SQL存储过程、函数Demo

    本资料包“SQL存储过程、函数Demo”提供了一个综合性的学习和实践平台,包括数据库文件以及C#语言调用SQL存储过程和函数的示例。 首先,我们要理解什么是SQL存储过程。存储过程是预编译的SQL语句集合,它可以包含多...

    sql存储过程实例

    简单的oracle存储过程demo,可以参照写法写个存储过程玩玩

    MqSQL存储过程在项目中的运用demo.rar

    本项目“MqSQL存储过程在项目中的运用demo”就是一个针对初学者的示例,旨在帮助理解存储过程在实际操作中的应用。 首先,存储过程的创建:在MySQL中,你可以通过`CREATE PROCEDURE`语句定义一个存储过程。它通常...

    Asp.net分页存储过程_Demo

    本文将深入探讨如何使用SQL存储过程结合ASP.NET实现高效分页功能,并提供一个Demo源码示例。 首先,理解分页的基本概念至关重要。分页允许用户逐步浏览大量数据,而不是一次性加载所有内容。在ASP.NET中,我们通常...

    华为SMV1R5_DEMO(华为存储模拟器)

    1. 下载与安装:获取华为SMV1R5_DEMO的安装包,遵循安装指引完成安装过程。 2. 启动与登录:启动模拟器,输入相应的用户名和密码进行登录。 3. 环境配置:根据需要创建虚拟存储环境,如定义硬盘、组建RAID、创建存储...

    pb调用存储过程

    这里的`CREATE PROCEDURE proc_pslx AS`定义了一个名为`proc_pslx`的存储过程,其内容是插入一条数据到`demo`表中,`name`字段值为'55566'。`GO`关键字在SQL Server中用于分隔不同的批处理。 存储过程有多种优点,...

    demo.zip_DEMO_VC++ SQL _vc 存储过程

    这个"demo.zip_DEMO_VC++ SQL _vc 存储过程"的示例可能包含了实现这一过程的具体代码,对于初学者或有经验的开发者来说,都是一个有价值的参考资料,可以帮助理解和掌握如何在C++环境中高效地操作数据库。

    三层无存储过程分页Demo

    三层无存储过程分页Demo 修改web.config ;user id=sa;password=sa;initial catalog=Northwind;" providerName="System.Data.SqlClient"/&gt; Northwinddb是数据库连接名称 .数据库服务器名 这段程序原来是用...

    腾讯cos云存储案例Demo

    【腾讯COS云存储案例Demo】是一个以腾讯云对象存储服务(Cloud Object Storage,简称COS)为基础的应用示例,旨在帮助开发者更好地理解和使用腾讯云的COS服务。该Demo可能包括了上传、下载、管理对象(文件)等功能...

    三层无存储过程分页Demo_dotnet整站程序.rar

    【标题】"三层无存储过程分页Demo_dotnet整站程序"是一个.NET平台下的Web应用程序示例,展示了如何在没有使用存储过程的情况下实现分页功能。这个Demo是针对三层架构设计的,通常包括表现层(Presentation Layer)、...

    初学者Oracle存储过程的实现的Demo

    在这个“初学者Oracle存储过程的实现的Demo”项目中,你将有机会深入理解存储过程的概念、创建、执行以及其在实际应用中的价值。 一、Oracle存储过程基础 1. 存储过程的概念:存储过程是一组预先编译的SQL语句,...

    执行存储过程的代码和数据库脚本

    本文将围绕“执行存储过程的代码和数据库脚本”这一主题展开,通过分析提供的Demo.sql文件和执行存储过程的相关知识,帮助初级学习者更好地理解和应用这些概念。 首先,让我们了解一下存储过程的基本概念。存储过程...

    C#面向对象及存储过程实现分页的Demo

    在这个"C#面向对象及存储过程实现分页的Demo"中,我们将探讨如何在C#中利用面向对象的思想来设计程序,并结合数据库的存储过程实现数据分页功能。 首先,面向对象编程的核心概念包括封装、继承、多态和抽象。在C#中...

    华为DeviceManager Demo存储模拟器

    华为DeviceManager Demo模拟器能让用户模拟这一过程,了解如何配置和管理双活环境,以及如何在故障切换时保持数据一致性。 其次,LUN数据复制是备份和灾难恢复策略的关键组成部分。在华为模拟器中,用户可以学习...

Global site tag (gtag.js) - Google Analytics