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

2010 Oracle回顾(续)

阅读更多

没说完,接着来。

一.过程的实现

2010年最后一个多月基本在捣腾总部报表那块,改动起来挺让人不舒服的。具体表现为报表中全部使用的是视图,另外业务关系没有相关的文档,而且很多视图有问题,甚至有些表已经基本面目全非,或者压根就没有了,所以实在比较闹心。但是总体来说,也就那么回事,改呗!正是利用这段时间,好好地把数据库编程给落实了,并且基本能拿oracle编程实现的东西就能oracle编程实现,还是有些收获的。

过程在游标那块已经有所接触了,那么这里看个静态执行sql语句的过程:

create or replace procedure updateRe_SQL(id sys_report_file.fi_id%type) is

 i int;

  time1 varchar2(10);

  time2 varchar2(10);

  fl_id varchar2(4);

   s varchar2(4);

begin

  i:=0;

  time1:=dbms_utility.get_time;

  for i in 1..500 loop

      select t.fi_id into fl_id from sys_report_file t where t.fi_id=id;

      dbms_output.put_line('执行成功'||i||'条,id='||fl_id);

      s:=i;

   end loop;

  time2:=dbms_utility.get_time;

  dbms_output.put_line('时间差:'||round((time2-time1)/100,2));

  exception

 when no_data_found then 

      dbms_output.put_line('没有数据,中断:'||i);

      s:=s+2;

      dbms_output.put_line('没有数据,中断:'||s);

      updateRe_SQL;

  when others then

      dbms_output.put_line('其它错误中断:'||i);

end updateRe_SQL;

 

 

很简单的东东,这里也不做详解。为了程序的健壮性,建议写上异常处理。

二.函数的实现

函数,哎!到处都是函数,Java有函数,Javascript也有函数,只要是编程语言,基本都有函数这一说。废话不多说,讲下我使用过的函数呗。

-- Created on 2010/12/20 by LW 

create or replace function exception_sele(num in number) return varchar2 is

  fl_id varchar2(20);

  i     int;

begin

  i := num;

  select t.FILENAME into fl_id from ktsys.sys_report_file t where t.fi_id = i;

  return fl_id;

exception

  when no_data_found then

    return '没数据';

  when others then

    return '有问题';

end;

 

 

同样建议写异常处理。函数需要注意的是返回值的大小,如果返回值过小很有可能出现一些问题。也不是什么难的东东。

三.触发器的实现

触发器在项目组使用比较多,至少在某些表数据的操作时,使用了触发器。记得宿舍一哥们问他们项目需要使用按时间点进行数据操作,问有什么方式。这个它采用java编程进行实现,我觉得完全用触发器进行实现完全可能。只要数据库服务开着,某事件的触发将引起相应触发器执行,这样也便于维护。网上到时间点进行操作的触发器很多,这里没必要进行述说。另外我们做的系统中,对于触发器使用了Freemarker模板引擎,这里涉及到一些知识点,这里也不详说。举个自己写的简单触发器例子吧。

Before操作:

create or replace trigger ins

  before insert or update or delete on sys_report_file  

begin

  if to_char(sysdate,'DY') in ('星期三','星期四') then

     case when inserting then

           raise_application_error(-20001,'fail to insert');

         when updating then

               raise_application_error(-20001,'fail to update');

         when deleting then

              raise_application_error(-20001,'fail to delete');

     end case;

   end if;   

end ins;

 

 

    After操作:

Create or replace trigger tr_audit_emp

After insert or update or delete on ktsys.sys_report_file

Declare

  v_temp int;

Begin

  Select count(*) into v_temp from ktsys.sys_report_file;

  If v_temp = 0 then

raise_application_error(-20001,'fail to insert');

  End if;

  case 

     when inserting then

          raise_application_error(-20001,'fail to insert');

     when updating then

          raise_application_error(-20001,'fail to update');

     when deleting then

          raise_application_error(-20001,'fail to delete');

   end  case;

   end tr_audit_emp;

 

 

四.OracleJava的接触

总算要结束了,也快好几千个字,说明oracle数据库这块还是知道点东西了,明年一定要在质上有提高,到时就不是提高数据库编程能力,而应该将oracle的内部机制进行提高。

Oracle能够写java代码吗?可能没试过吧,答案是肯定的,只是一般不用,但是有时候遇到一些数据处理,用oracle费劲的话,倒是可以考虑用这东东整一下。不说废话,只说具体操作。

1.  建立java代码

create or replace and compile java source named mysource as

import java.util.Date;

public class Hello{

 public static void main(String []args){

        System.out.println("Hello");

 }

 

public static Date getDate(String str){

        System.out.println("Hello"+str);

        return new java.util.Date();

 }

}

 

 

很明显,两个静态函数,这里说一下,这里写的java代码用静态的static,否则会有问题。

2.  建立函数

create or replace function rand(str in string) return varchar2

AS

language Java Name 'Hello.getDate(java.lang.String) return Date';

 

 

怎么调用,哥就不说了。小屁东西。

3.  建立过程

create or replace procedure TransMetaData(str in string) as

  --language java name 'Hello.main(java.lang.String[])';  --貌似只能一个,

  language java name 'Hello.getDate(java.lang.String)';

 

 

怎么调用,哥还是不说。

ok!基本该说的也说了。原来我肚子里存的数据库房门的知识就这么点,哎!继续武装自己。

分享到:
评论

相关推荐

    oracle 2010

    Oracle 2010是一个关于Oracle数据库在2010年相关知识的综合主题,包含了历史、技术学习资料以及可能的项目管理内容。以下是对这些文件内容的详细解读: 1. **Oracle公司历史**: itpub.net上的"Oracle_Company_...

    qt5.5 msvc2010 oracle11.2 oci

    标题“qt5.5 msvc2010 oracle11.2 oci”涉及的是一个集成开发环境(IDE)Qt 5.5版本与Microsoft Visual Studio 2010(MSVC2010)的结合,用于连接Oracle 11.2数据库的 OCI(Oracle Call Interface)库的构建和使用。...

    oracle基础知识回顾与练习.zip

    本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...

    VS2010远程连接oracle数据(两种方式)源码

    VS2010远程连接oracle数据(两种方式) OLeDbConnection; OracleConnection 内附详细源代码

    oracle知识点回顾

    主要讲述了oracle的详细知识点,通过一些详细的例子能够让您面试的时候顺顺利利

    VS2010如何Oracle创建数据实体模型

    VS2010如何Oracle创建数据实体模型

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer)

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    首先,Oracle.ManagedDataAccess是Oracle公司提供的一个纯.NET框架的客户端驱动,它允许开发者在不安装Oracle客户端的情况下,直接与Oracle数据库进行交互。这个库包含了所有必要的组件,使得C#程序可以方便地执行...

    Python连接oracle工具cx_Oracle官方文档

    cx_Oracle是Python数据库API规范的实现,用于访问Oracle数据库。目前,该模块经过对Oracle客户端版本11.2、12.1和12.2以及Python版本2.7、3.4、3.5和3.6的测试。cx_Oracle遵循开源的BSD许可证,这表示用户可以自由地...

    oracle.jdbc.driver.oracledriver Oracle JDBC驱动包 ojdbc6

    Oracle JDBC驱动包是Oracle数据库与Java应用程序之间进行通信的关键组件,它使得Java程序员能够通过编写Java代码来操作Oracle数据库。标题中的"ojdbc6"指的是Oracle JDBC驱动的一个特定版本,适用于Java SE 6环境。...

    OracleClient-19C Oracle客户端,包括windows和Linux

    Oracle Client是Oracle公司提供的数据库连接工具,用于与Oracle数据库服务器进行通信。19C是Oracle Database的一个版本,代表第19个主要版本。这个压缩包包含的Oracle Client适用于Windows和Linux操作系统,使得...

    Mysql转Oracle软件 DBMover for Mysql to Oracle

    Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...

    cx_Oracle使用手册

    cx_Oracle是Python编程语言中用于连接Oracle数据库的一个模块。该模块遵循Python数据库API规范,并且适用于Oracle 11.2和12.1版本,同时兼容Python 2.x和3.x版本。cx_Oracle模块通过使用Oracle客户端库来实现与...

    2010年10月最新ORACLE OCP培训教程

    Preface 1 Introduction Course Objectives 1-2 Suggested Schedule 1-3 Lesson Objectives 1-4 Oracle Products and Services 1-5 ...Oracle Internal & Oracle Academy Use Only.............................

    单实例安装oracle10g oracle11g

    在文档的最后,通常会有一个实验总结部分,对整个安装过程中的关键步骤和遇到的问题进行总结回顾,并对可能出现的常见问题进行解释。 在实际操作时,需要注意的是,文档中提到的某些步骤可能会因为Oracle和Red Hat...

    oracle SQL查询工具

    oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...

    oracle10G和oracle11G的OCI.dll

    oci.dll是Oracle Call Interface的缩写,它是Oracle数据库的一个核心组件,允许开发者使用各种编程语言与Oracle数据库进行交互。在Oracle 10G和11G版本中,oci.dll扮演了至关重要的角色,为应用程序提供了访问数据库...

    SqlDbx连接oracle

    首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种无需完整Oracle客户端的方式来实现连接。这种连接方式通常依赖于Oracle的Instant ...

    oracle客户端免安装版

    Oracle客户端免安装版,也被称为Oracle Instant Client,是Oracle公司提供的一种轻量级的数据库连接工具,无需完整的Oracle数据库服务器安装即可使用。它主要用于在不安装完整客户端的情况下,实现应用程序与Oracle...

    Oracle Data Provider for .NET (ODP.NET)

    Oracle 10g 第 2 版 ODAC 和 Oracle Developer Tools for Visual Studio .NET 下载文件 ODTwithODAC1020221.exe 235 MB(247,296,458 字节) ODAC 安装说明 Oracle Developer Tools For Visual ...

Global site tag (gtag.js) - Google Analytics