Oracle 存储过程中发送邮件,并支持用户验证、中文标题和内容

在 Oracle 的存储过程执行中,我们可能希望它本身能完成邮件发送执行的结果,特别是在捕获到了异常时。不能总是依赖于调用存储过程的外部程序--调用后,根据出口参数,发送执行结果。这一需求更迫切的表现在非人工参与的 Oracle Job 调用存储过程的情况下。

所幸,Oracle 为我们提供了发送邮件的工具包 UTL_SMTP,它最早出现在 Oracle 8.1.7 版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器,中文标题和中文内容无乱码,只还未支持附件的发送,相信这方面应用较少,需要的话再 Google 一下,且文后参考中有相应的链接。 阅读全文 >>

Oracle 中重新编译无效的存储过程, 或函数、触发器等对象

Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效,至今原因都未查明。

查询 dba_dependencies 视图可以看到存储过程所引用的对象,再就在 dba_objects 视图中可以看到对象的 created 和 last_ddl_time 时间。

上面的那种无效的存储程,只要不是语法上有问题,重新编译一下又是可用的了。总不能每次发现时人工去编译的,所以要实现自动化,有以下两种方法(网上找到的所有的 在Oracle中重新编译所有无效的存储过程 代码排版都很混乱,所以主要是重新整理了): 阅读全文 >>

关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法

在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:

1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中
2. 建立数据库间的 dblink,然后用 create table B as select * from A@dblink where ...,或 insert into B select * from A@dblink where ...
3. exp A 表,再 imp 到 B 表,exp 时可加查询条件
4. 程序实现 select from A ..,然后 insert into B ...,也要分批提交
5. 再就是本篇要说到的 Sql Loader(sqlldr) 来导入数据,效果比起逐条 insert 来很明显

第 1 种方法在记录多时是个噩梦,需三五百条的分批提交,否则客户端会死掉,而且导入过程很慢。如果要不产生 REDO 来提高 insert into 的性能,就要下面那样做: 阅读全文 >>

Unmi 学习 Groovy 之 Groovy 和 Swt

如上篇:Unmi 学习 Groovy 之 Groovy 和 Swing,Groovy 应用 Markup、命名参数、匿名构造和闭包很好的支持了 Swing 开发。然而 IBM 当初考虑到 Swing 的表现自行开发了一个界面框架,并已广受开发者青睐,也在 RCP 中得到了发展。Groovy 自然也看到了这一点,有了实际动作,见 http://groovy.codehaus.org/GroovySWT。它通过 SwtBuilder 和 JFaceBuilder 不令提供了对 Swt 的支持,还支持了 Swt 更上一层的 JFace。

要使用 GroovySWT,必须先下载到 groovy-swt-0.3.jar,或用 Eclipse 自带的 swt.jar,或从 Swt 官方网站(http://www.eclipse.org/swt/) 上下载最新的 swt.jar。或者直接下载打包的 groovy-swt-0.3-including-Eclipse-libs.ZIP,其中包含有 groovy-swt-0.3 和 swt/jface 等包。swt/jface 工程的 classpath 设置这里不多说,本文假定你对 Swt 有一定的了解,最好能理解 Swt 的 HelloWorld 程序。下面还是以例子进行说明吧。 阅读全文 >>

为 JDOM 解析 XML 文件成 Document 加速

本篇讲述在 XML 中使用了 DTD 的情况下,用 JDOM 解析时如何加速,使用 Schema 验证 XML 的不在讨论之中。所用的是一个 Struts 1.3 的配置文件,大小为 102 K。

我们用 JDOM 解析 XML 最简单的代码莫过于以下两行代码,不过为了测试我们在其前后加上记录执行时间的代码:

在这个 struts-config.xml 中的 DTD 声明如下: 阅读全文 >>

用 Spring MVC 来处理向导式复杂表单

引子

我们在网上经常会碰到一些向导式的表单页面,比如 第一步 >> 第二步 >> 第三步…、基本信息 >> 联系方式 >> 兴趣爱好…。它们都是按类型分到多个有序的页面要你来完成填写的。当然,你也可以把它们全部罗列在一个页面里,那样用户就会感觉茫茫然,分不清主次,可能不会很好的予以配合。

然而像 Struts、WebWork 那样的 MVC 框架未提供类似的实现,都需自己采用某种方式来实现向导,可以用层的隐现方式,或逐步把填写的部分数据放 Session 中,最后汇总处理。幸运的是 Spring MVC 考虑到了这种应用需求,它提供了一个 org.springframework.web.servlet.mvc.AbstractWizardFormController 来满足你。 阅读全文 >>

如何用正确的方法写出高质量软件的75条体会[转]

1. 你们的项目组使用源代码管理工具了么?
MVM:应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。

2. 你们的项目组使用缺陷管理系统了么?
MVM:应该用。ClearQuest太复杂,我的推荐是BugZilla。

3. 你们的测试组还在用Word写测试用例么?
MVM:不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。

4. 你们的项目组有没有建立一个门户网站?
MVM:要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。 阅读全文 >>

Unmi 学习 Groovy 之数据库操作一

不夸张的说,Groovy 在使用 JDBC 对数据库的操作上是简化到了极致。Groovy 中的 SQL 支持在 groovy.sql 包中,而其中最耀眼的明星就数 groovy.sql.Sql 了。

现在我们就来体验一下 GroovySQL 给我们带来的快感。这里所用的示例数据库是 derbyDB, JDK 1.6 中附带了这个数据库(叫做 JavaDB),MyEclipse 6.X 也带了 DerbyDB。假设我们把它安装在 C:\Java\JavaDB,那么在 C:\Java\JavaDB\demo\databases 下有一个 toursdb(目录) 数据库。我们就用这个,当然你可以使用你手边已有的或最拿手的数据库。 阅读全文 >>

让 Java 轻松乐动起来,使用 JFugue 制作自己的音乐

学过或用过 Basic 的朋友大约还会记得,在 Basic 里要演奏(当时还是从 PC 喇叭里发出的,现在也能走声卡了)一段 哆来咪发唆拉西哆 可以写成:

直接用 JDK 可没有这么简单,虽然 JDK 1.3 开始就引入了 Java Sound API 处理 MIDI(Musical Instrument Digital Interface),可是它的接口很难使用,另外,Sun 也专为视、音频的捕获、回放、格式转换提供了 Java Media Framework API (JMF),但不能用来创作。有一个开源的组件 JFugue(http://www.jfugue.org/),它能让你尽显音乐方面的天赋,给你一个高级易用的接口来操作 Java Sound,制作自己的 MIDI 音乐。 阅读全文 >>