2008年11月13日星期四

Oracle调用存储过程添加数据记录(包括唯一性判断)

继续我的文章之旅:
最近一直在Oracle打交道,当然我们也是一些调用采集并不涉及到内部机制。以前听老师说ICBC(爱存不存)后台数据整理,请了一洋鬼子Oracle专家,一小时上万刀!!!听了都让人心痒痒^_^。说完废话切入正题:在JAVA中调用Oracle存储过程往数据表中添加记录,同时在SQL语句中完成(Name)唯一性判断,若不存在相同Name就插入记录否则操作提示已存在相同记录。
整个原理比较简单,为了让需要的人(那些Rookies)知道个究竟我通过实例的方式来讲解。希望对你们有所帮助。
简单的例子,简单言语,让你简单的理解原理,Here we go…
首先你得书写你的SQL语句(具体代码我放在源码件中打包上传),先创建表Toy(用于插入数据使用),然后针对Toy表再创建Procedure(checkAddToy)用来实现想Toy表插入记录的功能,同时在SQL语句中进行Name(Toy表中的一属性)的唯一性判断。
因为要涉及到过程的使用,所以你对Procedure是什么?怎么运用?如何编写得有一定的了解,这个就不多说了SQL语言的基本知识大家网上自学吧。简单看看这个procedure吧:
create or replace procedure
( p_tid in toy.tid%type, //IN|OUT参数 需要和表中属性类型一致 不然Oracle
p_tname in toy.tname%type, //会报错,比较关键的是定义OUT参数 此参数为在java
p_address in toy.address%type, // 程序会被接收用于判断之用。
p_price in toy.price%type,
p_rebate in toy.rebate%type,
ResultNum out number)
is
id varchar2(10); //SQL内部变量
begin
ResultNum:=0;
select tid into id from toy where tname=p_tname; //这里用于判断是否已经存在相同name
if id is not null then
ResultNum:=1;
else
ResultNum:=2;
return;
end if;
exception
when no_data_found then //这里需要说明一下 本来应该在else里实现插入数据,
insert into toy(tid,tname,address,price,rebate) //可是每当不存在相同name时(即select tid into id from toy where tname=p_tname;此语句返回空值时)
values(p_tid,p_tname,p_address,p_price,p_rebate); //它总是返回异常。试了
dbms_output.put(''); //好几次 都没解决。于是将插入功能移到异常处理部分,同
//样可以实现。只是逻辑上不太讲的过去。哪位仁兄帮改下。。
end;
过程创建完毕,然后就是前台java程序的调用了,写一个简单的类,测试一下就OK 啦:
public class TestMain
{

static Connection conn = null;
static Statement stmt = null;
static ResultSet rs = null;
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@10.10.40.15:1521:xt";
String user = "user17";
String passwd = "user17";
try
{
Class.forName(driver);
conn = DriverManager.getConnection(url, user, passwd);
//stmt = conn.createStatement();
String tid="F000010";
String tname="jummy";
String address="Shanghai";
int price=10;
float rebate=(float) 0.2;
CallableStatement proc;
try {
proc = conn.prepareCall("{call heckAddToy(?,?,?,?,?,?)}");
proc.setString(1,tid);
proc.setString(2, tname);
proc.setString(3,address);
proc.setInt(4,price);
proc.setFloat(5, rebate);
proc.registerOutParameter(6,OracleTypes.NUMBER);//这里就是获得过程的OUT参数
proc.execute();
int a1=proc.getInt(6);
if(a1==1){
System.out.print("插入失败");
}else{
System.out.print("插入成功");
} catch (SQLException e) {
e.printStackTrace();
}
简单看下输出结果:
if id is not null then
ResultNum:=1;过程中我们是声明不为空 就是存在已有Name时为1,否则为0.然后insert记录。
测试数据:F000010,jummy, Shanghai, 10, 0.2
Toy表结构:

插入F000010之前的数据:

插入之后(因为不存在TNAME=jummy的记录所以插入成功)

当你再插入一条NAME为jummy的记录时,控制台就提示 。整个过程是在SQL里完成。
后记:整个程序简单演示一遍如何创建存储过程以及如何使用,这个懂了以后碰到过程的问题估计也就差不多了。当然不同功能的过程编写还是需要花点功夫的。整个程序我会传在附件里,需要的可以下载参考。(Original Article @All rights reserved)

2008年11月12日星期三

那所谓的"三巨头"----三个和尚和那一场大火

看球图的是个兴致,打输了就该不高兴,有条件的甚至可以砸电视机---当然,这不提倡。
如果但凡输了球,就叫一声胜不骄,败不馁,来日方长,那就太淡了,没意思—这 和论坛上的拍人一个道理,有人拍人直掐七寸,往死了掐,拍的对手血气上涌,面红耳臊,仪态大失,恨不得跳脚大骂,这就到点子上了;另有一些人,名为掐人, 写出来的东西却软绵绵分明是打情骂俏套近乎,被掐的人一看,哟?我们很熟吗?还得受累笑嘻嘻回复一句一切安好,不日再来。
这就是矫情,掐不如不掐。
说凯子队的三巨头顺利夺冠,让人一时间忘了当年四大天王扼腕的往事,不过讲老实话,四大天王也并不算是真失败,毕竟组队后那也是在联盟中砍瓜切菜,震怖神佛,一举杀进总决赛,最后功亏一篑,虽说原因众说纷纭,但马龙的时战时不战倒确实是一桩原因。
如此看来,球星的堆积,只要够分量,成功的例子倒是不少,这难免让后来人得意忘形。
比如我们的火箭,只可惜,最近的休斯顿人似乎大有推倒先例,另开新铺的意思---当年我每天指着看凯子队笑话,结果到了凯子队拿了奥布莱恩杯我终于知道这笑话是看不成了,如今我每天指着火箭拿奥布莱恩杯,结果反倒是现在天天在看笑话,这很折磨人。
火箭从季前的意气奋发到如今的步履蹒跚,原因在哪?
一个讲法是赛季刚开始,一切都不得而知,或许只是暂时的磨合问题,好日子在以后呢。
这或许是个正解,但要提这个,那这篇文章就没必要写了。
我们另找原因。
依我看,火箭的问题第一可能在于球星的质量。
关于这个问题,我是这么理解的,我们知道中国有句老话,橘生淮南则为橘,橘生淮北则为枳,说的是同一样事物在不同的地方会因为水土原因产生完全向左的结局---可能极糟可能极好。
火箭的三个头究竟是甜美的橘还是干涩的枳每个人都有自己的看法,而照我的观点则是:都还可以,至少在前四场比赛中,三人的表现基本可圈可点,期间有状态的起伏,但总的来说,作为一个球星,他们是合格的,鉴于这个话题容易引来口水,放在一边。
总之如果是球星质量问题,那么我觉得这三人掂掂分量还算靠谱,我们可以放下心,时间到了,他们自然会体现威力。
怕就怕这第二个可能。

说到这第二种可能,就要复杂许多,那就是三人是否能够真正拧成一股绳,而不是各自为阵,最糟的是,三个人会不会成为-----三个和尚?
三个和尚的故事大家都知道,一个人的时候日子过的挺滋润,两个人了就有些将就了,等到第三个和尚跑到庙里,那是水也不扛了,饭也不煮了,都说人多力量大,真的人多了,反倒日子都过不下去了。
为什么?一个原因是懒,另一个原因是推卸责任----说到底,这还是因为懒。
阿泰是新来的,不好说,但一直以来,姚麦两人我都觉得有点“懒”,这个“懒”倒不是说他们惮于训练,好逸恶劳,从报刊媒体之上我们看到的姚麦似乎不仅不懒,反而训练的异常勤快。所以这个“懒”别有他指。
很多时候,姚明在缺乏手感的情况下,往往选择让其他队友来进攻,但事实上,在大多数情况下,姚明依旧是队中那个最接近篮筐,最容易得分的选手,一旦他打不开局面,比赛就会很艰难,常规武器没有了,靠那些冷门偏门的兵器或许能救一时,但救不了一个赛季。
所以,以姚明今时今日的地位,他完全可以允许自己用几场比赛以赛代练寻找手感,不断的进攻,允许失误,也允许犯规,但姚明却偏偏不,他就像一个完美主义者一样计较自己的每一次失误和犯规,结果是越是小心翼翼,他就越是要失误要犯规,恰得其反,一环套一环,死循环。
一个放不开的球员很难在场上找到自己的节奏。
姚明在这种比赛中就会采取一种极端的方法来逃避犯规和失误,那就是稍遇阻力就把球向外转移,让外线的投手们试手感,殊不知,这种对犯规的逃避所体现的正是一种对责任的逃避,这些年,我们难以对姚明的领袖地位坦然受之,很大程度正是羁绊在此。
这是姚明的懒,一种对责任的逃避。
而麦蒂的懒则恰恰相反,他似乎永远是球队中最乐意承担责任的人,球队在打不开局面的时候一个接着一个的投,企图接管比赛,这很好,这确实是他应该去做的,但 问题是,今时不同往日,麦蒂的命中在这几年就像个喜怒无常的疯子,热起来可以颠倒乾坤,冷起来就暗无天日,但他依旧不管不顾,一次次的用投篮未果来挑战篮 筐,直到最近的16投1中,这里面的潜台词就是,他选择了一个最简单的方式来体现责任,那就是过于随意,球一旦推进到前场就是投篮了事,然后让队友为他擦屁股。
这种所谓的“责任”,其实是一种对责任的亵渎,如果这么容易就可以体现责任,那这担子谁都可以来挑,赋予你这个权利,就是让你对自己的行为给出一个让人满意的答案。
麦蒂应该做的就是利用自己的优势---就像姚明的身高---进行突破后的助攻,在冲击对手的情况下,去选择最容易得分的队友---自己或者别人。
这很显然要比不停的跳投杆拔来的困难一些,但比赛,有容易的么?
麦蒂的懒,是一种对责任的变相推卸---选择简单的方式来完成自己的任务,当然,完成的往往并不好。
当年两个和尚的时候,姚麦都知道自己是焦点,非我即彼的罪过,所以还能轮流做一下庄,现在来了第三个和尚,姚麦对于自己责任的认识似乎更淡了一些,谁都指着对方去挑水,结果呢?
在原故事里,一只老鼠咬断了香烛烧了庙,三个和尚终于通过一场大汗淋漓的救火运动在绝望中得到了新生。
如今,湖人29分的羞辱是否能起到那场大火的作用,一切却还是未知。
我终究不希望火箭的三个头会是三个和尚,那太可悲了,毕竟大火时常有,但能在大火中得到涅槃的,却罕有所闻!
文章出自互联网原文《三个和尚和那一场大火》

NBA Daily(绿耀东部)

这支球 队会不会像2006年的热火一样瞬间崩盘呢?这种可能性看起来并不大,首先丹尼-安吉下注的三个球员年纪都没有奥尼尔那般大,职业生涯的巅峰期至少还能延 续两三年;其次,从合约构成来看,凯尔特人真正给予长约的是加内特,而他又将是三巨头中职业寿命最长的一个,因此风险相对较小;第三点来看,波士顿的财团 比迈阿密更有实力,从地区传统上来看,处于新英格兰地区的波士顿更有职业体育的底蕴,他们也更加舍得付出。红袜队多年来能够和扬基比拼,靠的也是这种底蕴 的支撑。

首先我承认我不是Paul的球迷,这个曾经的Celtic的领袖(虽然现在所有的人都认为他仍是领袖,并且收获07-08赛季Final MVP.)但是谁都看得出,谁为Celtic带了如此蜕变。那个男人叫KG。

“一个十三连败球队只能选一位连中11刀都不会死的人才能当队长”此人就是Paul,我不知道他为什么打架,为什么被人连刺11刀,最惊奇的是为什么11刀后他还是活着?这是安吉把KG从西部请来之前Paul的处境。

我没有任何贬低Paul的意思,我甚至认为他是3号位上最勇猛的球员,无人能敌的贴人转身,稳健的罚球以及那场和James的对飙的41分。 我只是疑问,或许这就是事实------没了Allen和KG或许Paul就成了那天的James。什么叫独木难支?问问LeBorn去吧。当然,最新消息: “真理”又一次拯救球队,所谓的主场屠(猛)龙!

没人认为在KG,Allen来之前的Celtic球服是漂亮的,至少在KG穿上白兰球衣那一刻我决定买一件,哪怕是Mock版也无谓,过过瘾也无妨!当我还在一直暗暗自责如此善变的同时,Celtic已经几乎以压倒性优势干掉我的球队Lakers拿到球队史上的又一座奥布莱恩奖杯,而那个叫Paul的,绰号“真理”的男人同时从斯特恩手里接过了那尊本该属于KG的MVP!

我并不是为KG鸣不平,毕竟是他去了Boston而不是Pierce Paul去了Minnesota,毕竟安吉总是以”Paul的球队来称呼Celtic”。至少我觉得,假如(仅仅是假如)Celtic在得一次总冠军,MVP你说会给谁,我可以告诉你:只要KG不酒后驾车,并将车开进安吉的办公室。那尊小铜人就叫KG。当然那是假如,因为我的真实想法是:Lakers问鼎,Kobe将那尊小人带回家给他二女儿当Kitty玩。我的球队是Lakers我的偶像是Kobe Bryant。我不管你喜不喜欢这个男人这都与我无关,我要做的就是继续看他打球。

2008年11月11日星期二

迟到的MVP------KobeBryant

这是我见过的最和谐的一张MVP获奖照片,得主是科比-布莱恩特。他在2007-2008赛季场均拿下28.3分6.3个篮板5.4次助攻1.8次抢断,命中率45.9%;季后赛到目前为止,他场均拿下34.4分5.4个篮板6.4次助攻。场均得分由第二前进到第一,足以反应科比并不觉得MVP是他的赛季终点。但我并不想多说这些,只是回想了这个人在过去几年所走过的道路:科罗拉多公案的影响;和队友关系的微妙;一次又一次被正道所遗弃。排斥甚至怨毒的目光像显微镜一样照射在他身上,我实在是很想了解他那时的心态。湖人三连冠,首功记给奥尼尔;两届得分王,媒体说赢球才是王道。那么那一系列漂亮的数据和伟大的成就就都能被视而不见了么?他的左右前后,是他的妻子儿女。在这样的时候,没有比家庭和亲情更伟大的事物了,享受它吧,如同过去的一年又一年、日复一日他享受高得分的快感。

感冒药到底含有多少“毒品”

由于药品含有麻黄碱成分,可能被不法分子大量购买用于提炼制造毒品,北京药监总局向各药店发出通知称,即日起,将对含麻黄碱成分的新康泰克等数十种常用感冒、止咳平喘药限量销售,每人每次购买量不得超过5个最小零售包装。(11月10日《新京报》)

看了这则消息,不由人心头猛地一紧。

因为本人正极为不幸地患了重感冒,且已服用的感冒药都“榜上有名”。所以,我是相当地揪心:“麻黄碱”究竟是什么东西?尤其几乎人人都会与感冒药“亲密接触”,其中到底又含有多少这“毒品”呢?

据报道,麻黄碱全称“盐酸伪麻黄碱”,是多种感冒药中含有的主要治疗成分,然其结构上与“摇头丸”的主要成分甲基苯丙胺 类似,理论上可以被用来制毒。而北京市药监局则表示,公众只须按照医师处方或药师指导适量服用,不会有成瘾等副作用。话虽这么说,但为自家及广大“感冒同 仁”安全计,笔者还是禁不住要“过分担心”了。

一则感冒药中的麻黄碱含量是否真的多到了“理论上可以被用来制毒”姑且不论,但这都成为“主要治疗成分”了,那么是否对 患者产生“理论上”的副作用呢?二则单剂感冒药中“含量非常少”也好,公众“适量服用”也罢,其中的“量”究竟是怎样的“量”?依据何种标准?在抵达肠胃 之前,我们如何保障这“量”就一定是适量的?

麻黄碱在感冒药中的含量是否如专家所言,显然令人疑窦丛生。若非如此,恐怕我们只能推导出两厢怪诞的事实。一要么是这 “感冒药限购政策”很“傻”,既然麻黄碱含量如此之少,又何须规定“每人每次购买量不得超过5个最小零售包装”?二要么是制毒分子很“傻”,以至于会不计 成本从无“毒”物中一厢情愿地求“毒”。若立足于常识来看,这些都是不太可能的。

笔者不惮于作此恶意“揣测”,毕竟药品变毒品的例子太多了。比如,昔日一度去向不明的“湖南省900万支氯胺酮制剂”, 最终却现身于制贩毒品“K粉”案件中,方才明白消费者在不自知地 “注射毒品”。坊间有言“中国人身体绝对是百‘毒’不侵的”,试问咱这“试验田”还有什么没种过?
(PM:)文章出自互联网http://news.ifeng.com/opinion/200811/1111_23_871706.shtml