<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-31732920</id><updated>2011-12-14T19:12:16.467-08:00</updated><title type='text'>精彩收藏－－收集所有我感兴趣的</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31732920.post-6694900382675428170</id><published>2010-02-26T22:48:00.001-08:00</published><updated>2010-02-26T22:48:32.165-08:00</updated><title type='text'>好久没有登录blog了，试试能发不。</title><content type='html'>不能上blog，真是杯具。。。 &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-6694900382675428170?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/6694900382675428170/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=6694900382675428170' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/6694900382675428170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/6694900382675428170'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2010/02/blog.html' title='好久没有登录blog了，试试能发不。'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-2510081072831856805</id><published>2007-09-13T20:57:00.001-07:00</published><updated>2007-09-13T20:57:35.443-07:00</updated><title type='text'>innosetup对bde打包安装</title><content type='html'>&lt;p&gt;&lt;font face="Courier New" size="2"&gt;&lt;font face="Tahoma"&gt;一个朋友拿来一套软件，让我帮着做一个安装程序，这套软件是用Delphi开发的，其中用到了BDE，因此要求把BDE也一起打包安装。&lt;br&gt;&lt;br&gt;我没用过BDE，更加不熟悉BDE的组成，刚开始不知道如何下手。由于我习惯使用InnoSetup来制作安装程序，便想到在InnoSetup的网站上也许有相关的介绍。于是登录InnoSetup的网站，在FAQ中找到了解决办法，现总结一下： &lt;br&gt;&lt;br&gt;一、首先，在InnoSetup的网站上下载BdeInst.cab、MiniReg.exe、AddAlias.exe三个程序，其中BdeInst.cab就是BDE的安装包，其中只包含BdeInst.dll一个文件，有3兆多，将它提取出来。&lt;br&gt;&lt;br&gt;二、将BdeInst.dll、MiniReg.exe、AddAlias.exe与要安装的应用程序放在一起。&lt;br&gt;&lt;br&gt;三、在制作好的InnoSetup脚本中的相关节中加入以下内容： &lt;br&gt;&lt;br&gt;&lt;/font&gt;[Files]&lt;br&gt;Source: &amp;quot;BdeInst.dll&amp;quot;; DestDir: &amp;quot;{tmp}&amp;quot;&lt;br&gt;Source: &amp;quot;MiniReg.exe&amp;quot;; DestDir: &amp;quot;{tmp}&amp;quot;&lt;br&gt;Source: &amp;quot;AddAlias.exe&amp;quot;; DestDir: &amp;quot;{tmp}&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;[Run]&lt;br&gt;Filename: &amp;quot;{tmp}\MiniReg.exe&amp;quot;; Parameters: &amp;quot;&amp;quot;&amp;quot;{tmp}\BdeInst.dll&amp;quot;&amp;quot;&amp;quot;&lt;br&gt;Filename: &amp;quot;{tmp}\AddAlias.exe&amp;quot;; Parameters: &amp;quot;&amp;quot;&amp;quot;Alias SubDir Driver&amp;quot;&amp;quot;&amp;quot; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&lt;font face="Tahoma"&gt;经过这样的改动，制作出来的Setup.exe就可以将应用程序连同BDE一块安装了。&lt;br&gt;&lt;br&gt;之所以要用到MiniReg.exe和AddAlias.exe，是因为BdeInst.dll其实是一个COM组件，拷贝到用户机器上以后还需要注册一下才能用，MiniReg.exe就是做这个工作的，它的功能类似RegSvr32（不明白为什么不直接使用RegSvr32）， MiniReg.exe是用Delphi编写的，源程序很短，顺便列在下面：&lt;br&gt;&lt;br&gt;&lt;/font&gt;// FileName: MiniReg.dpr&lt;br&gt;program MiniReg;&lt;br&gt;{&lt;br&gt;&amp;nbsp; MiniReg v1.0 by Jordan Russell&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; Note: For Delphi 3+, you&amp;#39;ll need to change &amp;quot;OLE2&amp;quot; below to &amp;quot;ActiveX&amp;quot;.&lt;br&gt;}&lt;br&gt;uses&lt;br&gt;&amp;nbsp; Windows, OLE2; // ActiveX&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;{x$R *.RES}&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;procedure RegisterServer(const Filename: String);&lt;br&gt;var&lt;br&gt;&amp;nbsp; LibHandle: THandle;&lt;br&gt;&amp;nbsp; RegisterServerProc: function: HRESULT; stdcall;&lt;br&gt;begin&lt;br&gt;&amp;nbsp; LibHandle := LoadLibrary(PChar(Filename)); &lt;br&gt;&amp;nbsp; if LibHandle &amp;lt;&amp;gt; 0 then&lt;br&gt;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @RegisterServerProc := GetProcAddress(LibHandle, &amp;#39;DllRegisterServer&amp;#39;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Assigned(@RegisterServerProc) then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterServerProc;&lt;br&gt;&amp;nbsp; finally&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; FreeLibrary(LibHandle);&lt;br&gt;&amp;nbsp; end;&lt;br&gt;end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;begin&lt;br&gt;&amp;nbsp; if ParamCount &amp;lt;&amp;gt; 1 then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;br&gt;&amp;nbsp; CoInitialize(nil);&lt;br&gt;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterServer(ParamStr(1));&lt;br&gt;&amp;nbsp; finally&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CoUninitialize;&lt;br&gt;&amp;nbsp; end;&lt;br&gt;end.&lt;br&gt;&lt;br&gt; &lt;font face="Tahoma"&gt;AddAlias的作用是向BDE注册一个别名，指向要连接的数据库(类似ODBC的数据源)，它运行时需要三个命令行参数，分别是：别名、子目录名、驱动名。AddAlias也是用Delphi写的，源代码如下：&lt;br&gt;&lt;br&gt;&lt;/font&gt;// FileName: AddAlias.dpr&lt;br&gt;program AddAlias;&lt;br&gt;{&lt;br&gt;&amp;nbsp; program adds a alias to the BDE configuration file &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; parameters:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0: programname + path (standard parameter of OS)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1: Name of alias&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if begins with &amp;#39;-&amp;#39; then delete first if exist&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else do nothing if exist &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2: path to data directory&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3: BDE driver name&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; Bugfix: Savierhs Lopez Arteaga 3.1.2001&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddAlias didn&amp;#39;t delete alias with beginning &amp;#39;-&amp;#39;&lt;br&gt;}&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;uses&lt;br&gt;&amp;nbsp; Windows, SysUtils, BDE;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;var&lt;br&gt;&amp;nbsp; GAlias:&amp;nbsp;&amp;nbsp;&amp;nbsp; string&amp;nbsp; = &amp;#39;New&amp;#39;;&lt;br&gt;&amp;nbsp; GDriver:&amp;nbsp;&amp;nbsp; string = szPARADOX;&lt;br&gt;&amp;nbsp; GAliasDir: string;&lt;br&gt;&amp;nbsp; FParams:&amp;nbsp;&amp;nbsp; string;&lt;br&gt;&amp;nbsp; FDrvName:&amp;nbsp; string;&lt;br&gt;&amp;nbsp; FDelete:&amp;nbsp;&amp;nbsp; boolean;&lt;br&gt;&amp;nbsp; i:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;function StrToOem(const AnsiStr: string): string;&lt;br&gt;begin&lt;br&gt;&amp;nbsp; SetLength(Result, Length(AnsiStr));&lt;br&gt;&amp;nbsp; if Length(Result) &amp;gt; 0 then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharToOem(PChar(AnsiStr), PChar(Result)); &lt;br&gt;end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;begin&lt;br&gt;&amp;nbsp; for i := 1 to ParamCount do&lt;br&gt;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case i of&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1: GAlias&amp;nbsp;&amp;nbsp;&amp;nbsp; := ParamStr(1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2: GAliasDir := ParamStr(2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3: GDriver&amp;nbsp;&amp;nbsp; := ParamStr(3);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br&gt;&amp;nbsp; end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; //default alias&lt;br&gt;&amp;nbsp; if GAliasDir = &amp;#39;&amp;#39; then GAliasDir := ExtractFilePath(ParamStr(0))+&amp;#39;Data&amp;#39;;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; //should delete alias first? separate alias name&lt;br&gt;&amp;nbsp; if GAlias[1] = &amp;#39;-&amp;#39; then&lt;br&gt;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FDelete := True;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //GAlias := Copy(GAlias, 1, Length(GAlias)); Bug&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delete(GAlias, 1, 1);&amp;nbsp; //Fix by Savierhs Lopez Artega &lt;br&gt;&amp;nbsp; end else FDelete := False;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; FDrvName := GDriver;&lt;br&gt;&amp;nbsp; //set Parameters, the driver and server name&lt;br&gt;&amp;nbsp; if (CompareText(GDriver, szCFGDBSTANDARD) = 0) or&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CompareText(GDriver, szPARADOX) = 0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CompareText(GDriver, szDBASE) = 0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CompareText(GDriver, szFOXPRO) = 0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CompareText(GDriver, szASCII) = 0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br&gt;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (CompareText(GDriver, szCFGDBSTANDARD) = 0) then FDrvName := szPARADOX; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set parameters for the new alias&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FParams := Format(&amp;#39;%s:&amp;quot;%s&amp;quot;&amp;#39;,&amp;nbsp; [szCFGDBPATH, GAliasDir]) +&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Format(&amp;#39;;%s:&amp;quot;%s&amp;quot;&amp;#39;, [szCFGDBDEFAULTDRIVER, GDriver]) + &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Format(&amp;#39;;%s:&amp;quot;%s&amp;quot;&amp;#39;, [szCFGDBENABLEBCD, szCFGFALSE]);&lt;br&gt;&amp;nbsp; end else begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (CompareText(GDriver, &amp;#39;INTRBASE&amp;#39;) = 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then FParams := Format(&amp;#39;%s:&amp;quot;%s&amp;quot;&amp;#39;,&amp;nbsp; [szSERVERNAME, GAliasDir]) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else FParams := Format(&amp;#39;%s:&amp;quot;%s&amp;quot;&amp;#39;,&amp;nbsp; [szDATABASENAME, GAliasDir]);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add other Parameters here !!!!!!!!!!!!!!!!!&lt;br&gt;&amp;nbsp; end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; DbiInit(nil);&lt;br&gt;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if FDelete then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbiDeleteAlias(nil, PChar(GAlias));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbiAddAlias(nil, PChar(StrToOem(GAlias)),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PChar(StrToOem(FDrvName)),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PChar(FParams), True);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbiCfgSave(nil, nil, True); &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; finally&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbiExit();&lt;br&gt;&amp;nbsp; end;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;end.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;杂感：&lt;br&gt;&lt;br&gt;一、InnoSetup这个安装制作工具非常好用，它短小精致、公开源码、无需注册可免费使用，能满足绝大多数需要，我经常向人建议抛弃InstallShield这个庞然大物，使用InnoSetup。&lt;br&gt;&lt;br&gt;二、原来的印象中，BDE也是个庞然大物，有10兆之巨，但这次的安装包只有3兆，很出乎意料。&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-2510081072831856805?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/2510081072831856805/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=2510081072831856805' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2510081072831856805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2510081072831856805'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/09/innosetupbde.html' title='innosetup对bde打包安装'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-8428625122814153650</id><published>2007-07-11T02:19:00.000-07:00</published><updated>2007-07-11T02:20:00.964-07:00</updated><title type='text'>信息周刊：宝洁公司拥抱Web2.0宝洁|web2.0| - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://www.20ju.com/content/V9109.htm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;信息周刊：宝洁公司拥抱Web2.0宝洁|web2.0|&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;雷&lt;/p&gt;&lt;span&gt;富礼(A.G. Lafley)自2000年担任宝洁公司(P&amp;amp;G，下称宝洁)的首席执行官(CEO)后，便不遗余力地推动公司员工改善彼此间以及与合作伙伴之间的合作方式，以更迅捷地开发出新产品。既得到了CEO的全力支持，现在又有无数的Web  2.0工具可供选择，乔・舒尔勒(Joe Schueller)还有可能面临哪些问题呢?他肩负着在宝洁公司部署、应用新协作工具的重任。 &lt;br&gt; &lt;br&gt;　　电子邮件算得上一个，舒尔勒将之形容为阻碍宝洁员工应用交互式更强、也更有效的工具的最大障碍。&amp;quot;作为邮件的发送者，我控制着身边每个人的日程安排，&amp;quot;舒尔勒表示。电子邮件的发送者可以决定，谁能阅读某个消息;而&amp;quot;回复所有人&amp;quot;按钮所确保的，只是在周围所有参与者都完全丧失兴趣之后才对之发出提示。相形之下，网络日志(Blog)所寻求的则是那些兴趣最为浓厚的人的反馈意见。同时，舒尔勒还得面对来自某些员工的不满之声，这些人将处理电子邮件以外的任何事都视为加重了其工作负担。&amp;quot;我们接连不断地听到这样的抱怨：即往内部网上发帖是额外工作。&amp;quot;他补充道。 &lt;br&gt; &lt;br&gt;　　在前不久于波士顿举行的Enterprise 2.0大会上，商业科技主管们已经结束了新概念的探讨，开始寻求部署实用技术。&amp;quot;一年前，我曾会晤过一些入选《财富》杂志前25名CEO的人，那时他们对Wiki一无所知。&amp;quot;现在，他们开始问我如何将Web 2.0工具与其现有内容管理系统集成起来。开源系统集成商SpikeSource公司CEO金・波莱斯(Kim Polese)介绍说。SpikeSource销售的Web 2.0工具包括Movable   Type Blog和Socialtext Wiki。 &lt;br&gt; &lt;br&gt;　　宝洁根据自己的项目范围及其从初创公司和知名厂商选购Web 2.0工具的途径，就如何发展Enterprise 2.0进行了研究。2005年，宝洁制定了以微软公司(Microsoft，下称微软)产品为核心的部署计划，该计划包括采用即时通讯、统一通信、以及实时通讯Live Communications Server等;网络会议采用Live Meeting;内容管理和协作通过SharePoint实现。现在，约有8万名宝洁员工使用微软IM系统，另外2万名已经迁移至Outlook。宝洁还有几个采用微软SharePoint技术的网站，并将于8月开始大规模部署该技术。 &lt;br&gt; &lt;br&gt;　　去年，在首席信息官(CIO)菲力波・帕瑟里尼(Filippo Passerini)的支持下，舒尔勒出任宝洁Enterprise 2.0计划的负责人，该计划旨在帮助宝洁员工应用更为多样化的工具集。目前，宝洁已部署了Movable Type网络日志软件，并且员工们已开始应用该软件创建了几百个网络日志;其中包括，公司设计副总裁由于受到了通用汽车公司(GM)设计大师鲍勃・鲁兹(Bob Lutz)的网络日志启发，而建立的网络日志;此外，公共关系部门也围绕着如何与外界讨论公司问题而创建的网络日志;当然，还有舒尔勒自己的网络日志，读者多为IT人员。未来几个月内，宝洁还会发布社会网络，以使员工更便捷地找到具有某种专业特长的人。 &lt;br&gt; &lt;br&gt;　　即使微软和国际商业机器公司(IBM)都在不断扩充各自产品的Web 2.0协作特性，比如莲花(Lotus)的Connections和微软的SharePoint Server 2007等社会网络工具都支持网络日志、Wiki、以及日历共享，但许多公司仍然下结论说：仅靠单一平台是远远不够的。 &lt;br&gt; &lt;br&gt;　　&amp;quot;如果做什么事都用微软的东西，这对你的系统模块性和灵活性意味着什么呢?&amp;quot;舒尔勒表示，他的头衔是宝洁公司全球商业服务部门的创新经理。&amp;quot;我不会全部选用微软的产品，老是那些大厂商。&amp;quot;而且，IT部门还需要学会如何集成员工自行引入的工具，他补充道。 &lt;br&gt; &lt;br&gt;　　超越谷歌和微软  &lt;br&gt; &lt;br&gt;　　在企业搜索领域，宝洁所瞄准的也不仅仅是其主要的供货商。该公司现在用的是谷歌公司(Google)的搜索产品，但是舒尔勒发现，网页等级背后隐含的概念，即基于链接的相关性，对企业而言并非始终都能说明问题，这是由于企业内部的信息并非总是建有链接。此外，他也担心，谷歌搜索过于依赖关键词，而对于那些描述得含混不清的想法，如果没有准确捕捉其中的一两个单词，那很可能就会无功而返。 &lt;br&gt; &lt;br&gt;　　因此，宝洁开始测试Connectbeam公司的产品，该产品可与谷歌搜索一同使用。企业员工可使用Connectbeam产品，共享书签、标签文章、页面、以及带描述性词汇的文档。如果某个员工用谷歌工具搜索某些内容，Connectbeam系统会将结果――相关的标签和书签，与谷歌搜索结果一同返回。 &lt;br&gt; &lt;br&gt;　　同时，宝洁也开始修复其基于BEA系统的门户网站，添加新闻和商业信息类RSS种子，以帮助用户对网站进行个性化。该公司希望，随着时间的推移，他们可据员工的岗位和其经常访问的网站，为之推荐所需的种子。 &lt;br&gt; &lt;br&gt;　　但是，如果这些工具被视为额外工作的话，舒尔勒怎么才能让所有人参与进来，都使用这些工具呢? &lt;br&gt; &lt;br&gt;　　思路之一，是以相对宽松的视角看待今天人们做事的方法，进而提供能助其实现此过程的工具。舒尔勒举了一个例子，宝洁的一名主管，每当其出差去会晤某个区域经理时，都会将所获取信息做到PowerPoint文件中，然后再将这些文件通过电子邮件发给其他人。与此不同，IT部门在微软SharePoint中建立了一个页面，主管可于此张贴其演示文档，这些文档会被存成远比电子信箱更为高效的数据格式。 &lt;br&gt; &lt;br&gt;　　CIO帕瑟里尼(Passerini)对于如何评估Web 2.0工具对于宝洁的重要性所持的战略一向是，&amp;quot;先让我们试试再说，&amp;quot;让IT团队先拿这些新技术试验一下，并且每个Web 2.0产品区域由不同的IT经理管理，舒尔勒介绍道。而IT团队亦将此视为改变自身地位的一个良机，因为在宝洁，地位举足轻重的是是品牌经理而非技术专家。&amp;quot;IT部门，特别是在一家生产肥皂的公司，只是后台支持的角色，&amp;quot;舒尔勒不无调侃地说道。他接着表示，&amp;quot;现在，我们大显身手的时机到了。&amp;quot; &lt;br&gt; &lt;br&gt;　　其他公司的IT部门也将这一轮Enterprise 2.0热潮视为自己出人头地、扬眉吐气的大好机会。出席Enterprise 2.0大会的上百家组织中，赫然在内的就有美国银行(Bank of America)、中央情报局(CIA)、联邦快递公司(FedEx)、摩根士丹利银行(Morgan Stanley)、以及辉瑞制药公司(Pfizer)等知名组织。 &lt;br&gt; &lt;br&gt;　　摩托罗拉公司(Motorola)是部署Web 2.0技术的先行者之一。迄今，该公司已用Scuttle软件建立了4,400个网络日志，4,200个Wiki页面，并且有2,600人积极对内容进行分类，而访问该系统的人数更多。摩托罗拉发起了一项名为Intranet 2.0的运动，Web 2.0工具大多被用于研究和信息共享，而销售人员则利用这些工具，针对每个客户都开发出一套全新的销售办法，他们还可重新利用发表在Wiki上的任何销售方法。使用Visible Path公司的社会网络软件，或者通过查看Wiki上的作者页，摩托罗拉员工还能轻而易举地发现具有某些特长的人。&amp;quot;这种办法，确实能让人们以新的视角看问题，如他们会看到聪明人和与自己相似的人是如何处理问题的。&amp;quot;摩托罗拉公司负责Enterprise  2.0技术的副总裁托比・莱德肖(Toby Redshaw)指出。依此思路，该公司开始围绕某些特定的问题和产品建立知识中心。 &lt;br&gt; &lt;br&gt;　　这也是舒尔勒的最终目标，员工及合作伙伴可以在企业内部网上搜索信息，创建档案，对文档进行分类，并共享书签，所有这些都会提升网站内容的价值。无论你叫它作社会软件还是用户创建的内容，其中的风险在于如果人们发现这些Web 2.0工具不那么好用，他们便不会为丰富内容贡献自己的一份力量，而这恰是构建整个完美周期所不可或缺的。IT团队需要把握住这个关键机会，向人们证明花时间在Web 2.0上是值得的。就像一名IT主管在Enterprise  2.0大会上所阐述的那样，&amp;quot;如果他们接受Web 2.0，他们就能将之用起来。&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;br&gt;        &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-8428625122814153650?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/8428625122814153650/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=8428625122814153650' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/8428625122814153650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/8428625122814153650'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/07/web20web20-google.html' title='信息周刊：宝洁公司拥抱Web2.0宝洁|web2.0| - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-7302096659485611991</id><published>2007-06-18T00:29:00.001-07:00</published><updated>2007-06-18T00:29:53.030-07:00</updated><title type='text'>SQL2005报表参数大于2K问题的终极解决方案 - 技术频道 | IT168 - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://tech.it168.com/db/s/2007-06-15/200706151541781.shtml" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;SQL2005报表参数大于2K问题的终极解决方案 - 技术频道 | IT168&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;h1&gt;SQL2005报表参数大于2K问题的终极解决方案 &lt;/h1&gt;&lt;/div&gt; 					&lt;div&gt;[&lt;a&gt; 收藏此页&lt;/a&gt;] [&lt;a&gt;打印&lt;/a&gt;]&lt;/div&gt; 				&lt;/div&gt; 				&lt;div&gt; 								&lt;/div&gt;  				&lt;div&gt; 					&lt;div&gt; 				 					作者：&lt;b&gt;AnyJack&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;a title="Click to call this number with JAJAH..."&gt;&lt;span&gt;2007-06-15&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; 					&lt;b&gt;&lt;/b&gt; 					&lt;/div&gt; 				 					&lt;div&gt; 						&lt;div&gt;&lt;b&gt;内容导航：&lt;/b&gt;&lt;/div&gt; 						&lt;a&gt; 																						 												 第1页 															&lt;/a&gt;   &lt;div&gt;   &lt;div&gt; 			&lt;a href="http://tech.it168.com/db/s/2007-06-15/200706151541781.shtml" title="" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;第1页：&lt;span&gt; 		 		 		 第1页 &lt;/span&gt;&lt;/a&gt; 	  &lt;/div&gt; &lt;/div&gt;  					&lt;/div&gt; 							 				 				 				&lt;/div&gt; 			&lt;/div&gt; 			 			&lt;div&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;【IT168 技术文档】&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;当通过表单提交信息给报表服务时，当参数值大于2K时，这时如果加入显示工具条参数时，IE会返回该页无法显示这样的错误信息，而如果不加显示工具条参数时，结果正常，但是就是没有工具条. &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;问题反馈： &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;据微软的专家说这是SQL2000/SQL2005的BUG，真是奇怪了，SQL2005研究了5年才发布，居然这一BUG依然保留，可以想象这是多么大的一个技术难题。&amp;nbsp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;解决思路： &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;据微软提供的建议，建议编写一个自定义的报表工具条。&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;解决办法：&lt;/strong&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先确定报表工具条的作用，它的作用是用于翻页和导出报表数据到其它类型的文档。可以看出，技术难点在于翻页，也就是当前报表总页数的获取。那么如何才能获得带指定参数的指定报表的页数呢？微软的建议是通过报表服务的WEB服务接口来获取，当服务器上装了报表服务时，也就相应的存在了报表服务的WEB服务接口，一般访问地址如下：&lt;a href="http://****/reportserver/reportservice.asmx" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://****/reportserver/reportservice.asmx &lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 通过这一公开的WEB服务，调用其相应功能可以实现报表服务的N多的功能，获取页数只是其中微不足道的功能之一，实现代码如下： &lt;/p&gt; &lt;div style="overflow: auto; width: 500px;"&gt;&lt;pre style="border: 1px solid black; padding: 4px; background-color: rgb(237, 237, 237);"&gt;&lt;div&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetNumber()&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top"&gt;  &lt;img src="http://219.232.114.72/Images/OutliningIndicators/ContractedBlock.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; { &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; deviceinfo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;DeviceInfo&amp;gt;&amp;lt;Toolbar&amp;gt;False&amp;lt;/Toolbar&amp;gt;&amp;lt;/DeviceInfo&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; ; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[] parameters&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_parameter.Split(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  ); &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; parameterNumber&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;parameters.Length;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;RS.ParameterValue[] param&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  ReportNumber.RS.ParameterValue[parameterNumber]; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt; &lt;br&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;parameterNumber;i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top"&gt;  &lt;img src="http://219.232.114.72/Images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);"&gt;...&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; { &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[] p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;parameters[i].Split(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  ); &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;param[i]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   ParameterValue(); &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;param[i].Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;p[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;param[i].Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; p[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;RS.ReportingService rs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   ReportNumber.RS.ReportingService();&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;rs.Url&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ._url&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/ReportService.asmx&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  ; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);"&gt;/**/&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; /*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;&lt;/span&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意，如果你的报表服务器和应用服务器不处于同一机器，那么你必须提供访问报表服务器的凭证，如下面的凭证是通过使用Negotiate 验证来传送用户名、密码。当然，如果2个服务器在同一台机器，那就非常简单了，直接使用本地凭证验证即可&lt;/p&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/pre&gt;&lt;/div&gt; &lt;div style="overflow: auto; width: 500px;"&gt;&lt;pre style="border: 1px solid black; padding: 4px; background-color: rgb(237, 237, 237);"&gt;&lt;div&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;*/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;CredentialCache cache &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CredentialCache();&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;cache.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; Uri(rs.Url), &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Negotiate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   NetworkCredential(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;administrator&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;crserver&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;rs.Credentials &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  cache;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/ContractedBlock.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);"&gt;/**/&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; /*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/InBlock.gif" alt="" align="top"&gt;rs.Credentials=System.Net.CredentialCache.DefaultCredentials;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;DataSourceCredentials[] credentials&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  showHideToggle&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; encoding;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  mimeType;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;Warning[] warnings&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  ; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;ParameterValue[] reportHistoryParameters&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; [] streamIDs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;SessionHeader sh&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  SessionHeader(); &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;rs.SessionHeaderValue&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sh;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; historyID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;byte&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[] result&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;rs.Render(ReportName,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;HTML4.0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  ,historyID,deviceinfo,param,credentials,showHideToggle,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; encoding,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   mimeType,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; reportHistoryParameters,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; warnings, &lt;br&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;out&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; streamIDs);&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; s&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.Text.UTF8Encoding.UTF8.GetString(result,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,result.Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  -&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; =&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;hr/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt; Regex regex&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Regex(r); &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;MatchCollection mc&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;regex.Matches(s);&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; mc.Count&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; +&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;&lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt; &lt;img src="http://219.232.114.72/Images/OutliningIndicators/None.gif" alt="" align="top"&gt;} &lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-7302096659485611991?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/7302096659485611991/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=7302096659485611991' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/7302096659485611991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/7302096659485611991'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/06/sql20052k-it168-google.html' title='SQL2005报表参数大于2K问题的终极解决方案 - 技术频道 | IT168 - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-8478767849891254417</id><published>2007-05-11T19:15:00.001-07:00</published><updated>2007-05-11T19:15:20.767-07:00</updated><title type='text'>母亲节送什么礼物最好？_百度知道 - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://zhidao.baidu.com/question/7247541.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;母亲节送什么礼物最好？_百度知道&lt;/a&gt;&lt;br&gt;&lt;br&gt;母亲节，为老妈准备礼物？其实，你真的不用为此大伤脑筋，因为能让老妈最快乐的事莫过于全家人的团圆与平安。一枝鲜丽的康乃馨，一顿可口而轻松的团圆饭，这就是对老妈最好的礼物。  &lt;br&gt; &lt;br&gt;敬重母亲、弘扬母爱的母亲节，至今已成为一个约定俗成的国际性节日。  &lt;br&gt;母亲节起源于美国。1906年5月9日，美国费城的安娜・贾薇丝的母亲不幸去世，她悲痛万分。在次年母亲逝世周年忌日，安娜小姐组织了追思母亲的活动，并鼓励他人也以类似方式来表达对各自慈母的感激之情。此后，她到处游说并向社会各界呼吁，号召设立母亲节。她的呼吁获得热烈响应。1913年5月10日，美国参众两院通过决议案，由威尔逊总统签署公告，决定每年5月的第二个星期日为母亲节。这一举措引起世界各国纷纷仿效，至1948年安娜谢世时，已有43个国家设立了母亲节。  &lt;br&gt;日本的母亲节也是5月的第二个星期日。节日里人们送给母亲一枝红石竹，表示祝贺。  &lt;br&gt;法国首次庆祝母亲节是在1928年，节日定在5月的最后一个星期日。节日这一天，数以百万计的妈妈们，怀着喜悦的心情接受各自子女们的&amp;quot;节日愉快&amp;quot;的美好祝愿。  &lt;br&gt;泰国于1976年宣布8月12日为母亲节。这一天也是泰王后丽吉的生日。节日里，全国要开展&amp;quot;优秀母亲&amp;quot;的评选活动。儿女们手持芳香馥郁的茉莉花，献给自己的母亲。  &lt;br&gt; &lt;br&gt; &lt;br&gt;康乃馨-  &lt;br&gt;象征母亲的花。  &lt;br&gt;别名：香石竹  &lt;br&gt;植物分类：石竹科。  &lt;br&gt;园艺分类：多年生草本。  &lt;br&gt;原产地：地中海一带。  &lt;br&gt;花色：红、深红、紫、  &lt;br&gt;紫红、桃红、粉红、黄、  &lt;br&gt;乳黄、橘红、白以及镶边  &lt;br&gt;、斑点等复色。  &lt;br&gt;栽种条件：康乃馨需植于  &lt;br&gt;开放且具全日照的地点，  &lt;br&gt;且富含腐植质、排水性、  &lt;br&gt;中性至碱性土壤。 &lt;br&gt;真情不变  &lt;br&gt; &lt;br&gt;组成： 11枝粉色康乃馨,1枝多头白香水百合,满天星,排草，内层粉色绵纸包装,外层粉色皱纹纸包装,淡紫色缎带打结.圆形花束. &lt;br&gt; &lt;br&gt;永恒的爱  &lt;br&gt; &lt;br&gt;组成： 20支粉色康乃馨，绿叶，石松、满天星、粉红色布纹包装纸、红色丝带  &lt;br&gt; &lt;br&gt; 吾爱吾家  &lt;br&gt; &lt;br&gt;组成： 5枝金百合+5枝玫瑰+2枝非洲菊 给你一个心灵的港湾，给你一个永远的归宿，家，你不悔的选择！ &lt;br&gt; &lt;br&gt;母恩永远  &lt;br&gt; &lt;br&gt;组成： 2枝火百合+18枝康乃馨 您曾说坚持虽不一定成功，但放弃的结果一定是失败。 &lt;br&gt; &lt;br&gt;给母亲的爱  &lt;br&gt; &lt;br&gt;组成： 18枝康乃馨+满天星  &lt;br&gt; &lt;br&gt;灿烂笑容  &lt;br&gt; &lt;br&gt;组成： 16枝非洲菊+6枝紫鸢花  &lt;br&gt; &lt;br&gt;幸福安康  &lt;br&gt; &lt;br&gt;组成： 4枝火百合+18枝红色康乃馨+黄莺 总让你担心的我祝妈妈一生幸福！  &lt;br&gt; &lt;br&gt;深谷幽兰  &lt;br&gt; &lt;br&gt;组成： 6枝洋兰+星花 是您给我的感觉 &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-8478767849891254417?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/8478767849891254417/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=8478767849891254417' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/8478767849891254417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/8478767849891254417'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/05/google_11.html' title='母亲节送什么礼物最好？_百度知道 - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-7961561311138030147</id><published>2007-05-07T06:13:00.001-07:00</published><updated>2007-05-07T06:13:02.547-07:00</updated><title type='text'>请问脚上长了瘊子怎么治疗啊？_百度知道 - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://zhidao.baidu.com/question/24820404.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;请问脚上长了瘊子怎么治疗啊？_百度知道&lt;/a&gt;&lt;br&gt;&lt;br&gt;瘊 子偏方大全  &lt;br&gt; &lt;br&gt;螳榔可治瘊  &lt;br&gt; &lt;br&gt;去年6月，我脸上、手上长出了很多瘊子，越长越大，已类似黄豆。到处求医无效，无意中听到有人议论螳螂能吃瘊子，便试验起来：用手捏住螳螂颈部，使它的嘴对准瘊子，它马上大口大口地吃起来，很快瘊子就被它吃掉，当然要流点儿血，但不疼。这时用清水对伤口进行冲洗，并用纱布擦掉血迹，几分钟后不再流血，两二天伤口就会愈合。至今已一年，一个瘊子也没再长。  &lt;br&gt; &lt;br&gt;香蕉皮可治瘊子  &lt;br&gt; &lt;br&gt;我曾得到一个小偏方：用香蕉皮敷在疣（俗称瘊子）的面，使其软化，并一点点地脱落，直至痊愈。我用这个方法已将我头及脸部的两个瘊子治好了。我是用香蕉皮多次敷，用手指一点一点掐掉的，治好后再未长出来。  &lt;br&gt; &lt;br&gt;4双极磁银针治刺瘊有效  &lt;br&gt; &lt;br&gt;亲友送我一支双极磁银针。我试用它在头部太阳穴长的一个如麦粒大小的刺瘊上进行刺激，经几次按压后，用手掐瘊子，一点血没出便自然脱落，长了多年的瘊子，根除了。梁惠敏  &lt;br&gt; &lt;br&gt;大蒜能治瘊子  &lt;br&gt; &lt;br&gt;数月前，我的右脸庞上长出一颗小米粒大小的瘊子，后来渐渐长到绿豆那么大。我试着将蒜瓣切成小块，用以擦抹患处。先是猴子表面出现干痂，最后竟至完全脱落．现在患处光洁如初，未留任何痕迹。  &lt;br&gt; &lt;br&gt;生猪油治瘊子  &lt;br&gt; &lt;br&gt;去年我手背上长了个瘊子，日渐增大。友人说可用生猪油（或肥肉）每天抹几次。我试用月余，瘊子竟自行脱落,一点迹也没留。  &lt;br&gt; &lt;br&gt;拉拉秧可治瘊子  &lt;br&gt; &lt;br&gt;拉拉秧的梗上有刺，像小挫一样。用拉拉秧的梗挫手上的瘊子，一挫即平，而且不感染。这是邻居告诉我的。我手上的瘊子，已经挫掉。  &lt;br&gt; &lt;br&gt;瘊子和皮肤熬生物简易治法  &lt;br&gt; &lt;br&gt;准备碘酒、75％酒精和细丝线一根（其他结实的细线也可）。用碘酒消毒瘊子，其面积要超过瘊子两倍，然后用酒精脱碘，用细丝线在瘊子根部勒紧系住（余线剪断），阻断血液供给，如瘊子蒂大，过三四天再紧一回。这样，小的瘊子和赘生物，四五天即干枯脱落，大的一周以后脱落。我从医多年，以此法治瘊子，无痛苦，不出血，不留瘢痕，效果甚佳。  &lt;br&gt; &lt;br&gt;鲜芝麻花可治瘊子  &lt;br&gt; &lt;br&gt;我小时候手背上长了一个玉米粒大的刺瘊。1948年秋，一位解放军战士告诉我可用鲜芝麻花在患处轻轻摩擦，经试用20次后，发现患处开始干裂，并逐步自行脱落，未留任何痕迹。 1960年手背上又长了一个瘊子，仍用此法消除。  &lt;br&gt; &lt;br&gt;紫药水治瘊子  &lt;br&gt; &lt;br&gt;我25岁时长了3个瘊子，后又发现3个。我无意中拿出棉花蘸紫药水涂在瘊子上作记号，以便去医院治疗、可是第二天一看，紫药水痕迹尚在，瘊子却只剩4个了，新生的小瘊子已消失。于是我每天用紫药水涂瘊子六七次，一周后瘊子全消失了，至今再没长过瘊子。  &lt;br&gt; &lt;br&gt;除瘊一得  &lt;br&gt; &lt;br&gt;1978年春，我右手掌长出一小刺瘊，不到半年竟有豌豆大。多方求医不见效。一次，我用唾液将刺瘊浸湿，又涂上吸烟时的热烟灰，一天一次，连续一星期。每次涂后有痛感，但慢慢结痂，痂掉后皮肤光滑如初，至今6年多未犯。  &lt;br&gt; &lt;br&gt;红荆花治瘊子  &lt;br&gt; &lt;br&gt;我邻居某君手背长了一些瘊子。去年夏天，他在地头休息时持红荆花（即荆条）搓着玩，第二天发现，手背的瘊子少了。他想这大概是红荆花的作用，于是到地里又用红荆花搓手背，不几天，瘊子全部消失，没有再生。  &lt;br&gt; &lt;br&gt;枸杞泡酒治瘊子  &lt;br&gt; &lt;br&gt;取数十粒枸杞浸泡白酒中，月余后，用枸杞沾酒涂在瘊子上，每天坚持数次，健忘者可家里、单位都预备药液，轻者数日就好，重者几周痊愈。经本人和我周围人的多次试验，治愈率100％，且不痛不痒。  &lt;br&gt; &lt;br&gt;蜘蛛网治瘊子  &lt;br&gt; &lt;br&gt;三十年前我腋下长了三个像黄豆粒大小的瘊子，听人讲，蜘蛛网治瘊子。后来我在民房内找了一个蜘蛛网，用根丝轻轻绕在瘊子上（绕时不要太紧），先松后紧，不几天三个瘊子全掉了。  &lt;br&gt; &lt;br&gt;蒲公英治瘊子  &lt;br&gt; &lt;br&gt;三年前我儿手上长了个瘊子，用了很多药不见效。朋友介绍一方，用蒲公英很快治愈。其方法：将新鲜的蒲公英整朵黄花折下，花茎就会流出乳白色的汁液，把汁液在瘊子上反复涂抹，每天涂1一2次，10天左右瘊子就消失。  &lt;br&gt; &lt;br&gt;大宝SOD可除瘊子  &lt;br&gt; &lt;br&gt;我右手面长了好多小瘊子，三年间用了各种方法医治无效，并且越来越多，很苦恼。自去年使用大宝SOD蜜，一个月后，竟发现手面上的瘊子全都消失了，且没有一点痕迹。我认为这是大宝SOD的功劳，现在我一直使用。  &lt;br&gt; &lt;br&gt;马齿苋可治扁平疣  &lt;br&gt; &lt;br&gt;我孩子4岁时脸上长满了扁平疣，多次去医院采用冷冻、摘除等方法治疗，然而从未根治，常常是过不了多久便复长如初，全家人为此苦恼不已。后邻居说马齿苋可治扁平疣，就去菜地边上采了一兜，将其洗净，剁成细末，纱布包好挤出汁液，每日早晚各一次涂抹于患处，两周后，孩子脸上的扁平疣消失了，且至今未复长。  &lt;br&gt; &lt;br&gt;野谷草茎可治刺瘊  &lt;br&gt; &lt;br&gt;前几年，我左手拇指的根部，长了一个瘊子，不久，在其周围又长了六七个小瘊子。涂药、削剪均无效。后来，一位同事说，用野谷草茎穿刺可根治。当时我半信半疑，软软的野谷草茎能穿透瘊子吗？于是，我在杂草中找到野谷草，抽出穗茎，借野谷茎底端湿润对瘊子底部反复捻动，还真把刺瘊穿透了。我把草茎沿瘊子的外沿把草茎用指甲剪去，留一小段在瘊子里，不疼不痒。过了两天，不知什么时候，瘊子了，周围的小瘊子也没有了，也没疤痕。后把此法告诉长刺瘊的同志，他们的瘊子也治好了。  &lt;br&gt; &lt;br&gt;土方治瘊子  &lt;br&gt; &lt;br&gt;小时候，脚上大脚趾处长了个刺瘊子，愈长愈大，上学走路都困难了。当时农村卫生医疗条件很差，无法根除。后来，村中一老人告诉我一个土方。就是找一个露天的碾子，当下雨时，用下在碾子上的雨水，去滴抹刺瘊子，就会好。趁一个雨大，我冒雨去碾子处用碾子上雨水滴抹患处。只一次，就在不知不觉中痊愈了。  &lt;br&gt; &lt;br&gt;茉莉花籽治瘊子  &lt;br&gt; &lt;br&gt;我脚上长了一个瘊子，大夫用刀剜去两个月后又长出来。一位伯伯告诉我将草茉莉花籽碾成粉末，拌上猪油，糊在瘊子上，数大后可使瘊子连根去除。果然，用这种方法，十二天后我脚上的瘊子连根掉下，不疼不痒。  &lt;br&gt; &lt;br&gt;香烟头烤治瘊子  &lt;br&gt; &lt;br&gt;我的右手背和手指上长出几个瘊子，我曾跑过多趟医院没能治好。听人说，用点燃的香烟每日烘烤3-5次可治。我 取无花果实，将无花果的白汁滴在瘊疣上；几日后瘊疣会自行结痂脱落，再继续滴用，直至疣子完全脱去。滴无花果汁时不用将疣子刮破。  &lt;br&gt; &lt;br&gt;丝瓜叶治软疣  &lt;br&gt; &lt;br&gt;软疣俗称水猴子，是一种皮肤病。此病如不及时诊治，极易反复发作，重者蔓延胸背四肢，让人心烦&amp;quot;将丝瓜叶揉搓后，涂擦于患处，两三大后身上的疣体开始变小，直至消失。  &lt;br&gt; &lt;br&gt;蓖麻仁治顽瘊  &lt;br&gt; &lt;br&gt;20年前，本人曾用民间士方治愈手背之顽瘊，至今未再犯，现介绍如下：取鲜蓖麻仁1枚，分成两半，以其切面，反复涂擦母瘊。每天1至2次，每次数分钟，1周内治愈。  &lt;br&gt; &lt;br&gt;治瘊子一法  &lt;br&gt; &lt;br&gt;看了《生活中来》&amp;quot;紫药水治瘊子&amp;quot;的报道，我想起了又一治瘊子的方法。那是1974年，我的手上长了几个瘊子。有人治病时服用乌洛托品，没想到同时也治好了瘊子。他把这经过情况介绍给我。我一试果然有效，手上的瘊子全部消失。只按药品说明用量及服法两周即可痊愈。  &lt;br&gt; &lt;br&gt;水泡瘊子除瘊法  &lt;br&gt; &lt;br&gt;我小时候常到河里游泳，在水里泡的时间一长手背上的3个瘊子就变的松软了，我用指甲一点一点把它们抠掉，长在内部的都是一根一根的紫筋。此时就用大拇指和食指的指甲卡住，一根一根地向外揪，并不感到疼痛。前后大约两个小时，没去医院手术就除掉了瘊子。几十年来不但没长连疤痕也没落下。请注意，也可用热水泡后再揪，效果是一样的。  &lt;br&gt; &lt;br&gt;薏米粥除瘊法  &lt;br&gt; &lt;br&gt;用薏米熬粥或生吃可治瘊子。几年前，我曾为长瘊子苦恼，按上述方法治疗，不久即愈。  &lt;br&gt; &lt;br&gt;鸡内金治瘊子  &lt;br&gt; &lt;br&gt;用鲜鸡内金擦患处，几次即愈，不留瘢痕。  &lt;br&gt; &lt;br&gt;星星草籽治瘊子  &lt;br&gt; &lt;br&gt;准备星星草籽（华北地区普遍生长的一年生小草，穗上有好多鳞状小片，内含极小的棕红色颗粒，即种子）若干，洗净消毒。洗净患处，用消过毒的针把瘊子顶端挑个小坑，即敷入星星草籽，然后贴上橡皮膏。此后即使发痒发胀也不要管它，一个星期后揭开，瘊子即随橡皮膏脱落，永不再发。这是一位老农告诉我的，曾把它介绍给长瘊子的患者，均治好，且不留瘢痕。  &lt;br&gt; &lt;br&gt;用醋浸泡鸡蛋治瘊子  &lt;br&gt; &lt;br&gt;鸡蛋洗干净后用针在蛋壳上轻轻地扎几个小针眼，把它放在同样大小的酒杯内，用醋浸泡24小时。把鸡蛋与醋一起煮熟吃下。一连吃3天，这是一个疗程。如瘊子多，可以再吃3天。我家两个孩子用这个方法全部治好了。  &lt;br&gt; &lt;br&gt;活蜈蚣浸香油治瘊子 &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-7961561311138030147?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/7961561311138030147/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=7961561311138030147' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/7961561311138030147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/7961561311138030147'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/05/google.html' title='请问脚上长了瘊子怎么治疗啊？_百度知道 - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-2427753375188359831</id><published>2007-05-03T10:43:00.001-07:00</published><updated>2007-05-17T07:46:25.727-07:00</updated><title type='text'>陕西境内主要旅游景点概述 - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://www.xdnice.com/hot2/s/2006-08/49.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;陕西境内主要旅游景点概述&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 0px; display: block;"&gt;&lt;strong&gt;陕西境内主要旅游景点概述&lt;/strong&gt; &lt;br /&gt;&lt;p&gt;　　&lt;strong&gt;未央湖&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　北大街乘坐236路2.5元人，门票20元，学生15元，年票免门票，划船不限时,可坎价 出租烤具，及其他配料，整套租金30元，押金50元，租一套烤具送10元肉，不让自带酒水，违者会扣烤具的押金，有露营区，30元帐篷 &lt;/p&gt;&lt;center&gt;&lt;/center&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;动物园&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　南二环320直接到动物园终点站，单程路费3.5rmbp。学生票40 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;兵马俑&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　火车站坐306或者西临高速的车，306是比较大的那种公交车，西临高速小一些，车身绿色，不要做私人旅行社的车，学生证半价45元，研究生证也适用，兵马俑有免票的机会&lt;br /&gt;　　1、免票对象：在校本科生团体。（注意不包括研究生，更不包括博士生）&lt;br /&gt;　　2、免票时间：每周一至周五下午3点～5点。4月15日～5月15日是黄金周旺季，不接待免票团体，所以要去的话只能预约5月15日以后的，咨询电话：029-81399047&lt;br /&gt; 　　3、手续：&lt;br /&gt;　　去学院开介绍信，要一式两联的那种介绍信，不是拿稿纸写的那种，介绍信上要写明人数，要学院公章，还要院领导的亲笔签名（不能盖章代替），一般找负责学生工作的院党委副书记就可以了。带学生证 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;法门寺&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　火车站广场的东边乘坐游2，每天一次，早8点出发，下午3点从法门寺返回，单程票价18元，不要轻易上火车站周围的旅行社的车，门票28，学生两人一张，珍宝馆，32元，学生16，有年票就免了（年票检查不严） &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;丰裕口&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　401到城南客运站，车很多，单程不超过1小时，从丰裕口大转盘向右拐，上107省道，也就是环山公路，7，8公里左右，有不少鱼塘农家乐，可以钓鱼，烧烤！ &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;罔�O寺&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　在�u市拐，东南门外乘坐607可到，�拇笙愀埘U翅北�鹊男〉劳��|一直走，150米左右就到了。免门票，游人不必买香 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;鲸鱼沟&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　交大电脑城坐240路到终点，一人1块钱改坐蹦蹦车到入口处，买票一个人5块钱，骑马10元人到沟底，自由选择，有烤炉出租，很小的那种，10块钱一个，一般2个就够用了，划船20元小时 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;蔡家坡&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　西安火车站坐火车到蔡家坡10元（城西客运站坐高速客车25元，推荐岐山臊子面，岐山锅盔，岐山臊子肉夹馍，岐山擀面皮，详见3796贴 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;汉阳陵&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　408到万寿路北口坐3-16，车站在万寿路北口西边约300米，票价4.5元,回来在张家堡倒228,来回各需要一个半小时左右，15门票（没有年票是45。另外，有学生票，但是研究生不算）详见3826贴 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;楼观台&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　在北门坐402到水司（西南城角）的客运站，乘坐到眉县或亚柏的汽车在终台路口下车，再坐三轮车到入口。记得要问到眉县或亚柏的汽车是否在终台路口停车。从西安－终台路口6～7元，终台路口－楼观台森林公园2元。门票好像是30元 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;太平峪&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　北门402路到水司，车票8元，在太平口下车，坐小面包车上山，5元人，学生门票20一人，成人票35，有农家住宿，可烧烤，建议自带肉 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;太平森林公园&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　401城南客运站乘西安至户县班车到户县至三球仪汽车站，乘户县至太平森林公园的班车，每天三个班次，早9：00持、中午12：00、下午3：30，西安接待站电话81498222 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;翠华山&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　城南客运站座4－01（始发）  票价2＋6，或者408到电视塔换4―01  票价1＋6，从城南客运站到翠华山约1个半小时，翠华山学生票35元 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;蓝田汤峪&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　南门401到城南客运站坐车，门票15，可泡温泉，烧烤建议自带烤炉，农家乐提供住宿，5元人，风景一般，适合班级休闲旅游 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;金丝峡&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　火车站旁边的西安汽车站坐西安到商南的汽车，票价35，从早上6：40开始，每40分钟一趟。下午2：00有商南到金丝峡专线，票价15。这条线路一天只有早7点和下午2点两班商南有两个汽车站，相距500米左右，去金丝峡的车在秦东宾馆旁边的那个汽车站坐。&lt;br /&gt;门票团体20 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;王顺山&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　乘车路线：现在西蓝高速公路的终点都设在火车站三府湾停车场，有直达旅游景点的大巴和中巴，大巴一般是宇通客车，中巴是红色的金龙。中巴一般只到县城，大巴视旅游人数多少决定是否去旅游地。可以做到蓝田县城，在乘车前往。&lt;br /&gt;　　应该直接到火车站附近的 长途汽车站坐西安－商洛的车， 那车途径王顺山 倒是给司机说声就可以了&lt;br /&gt;门票不详，一说10元人，一说20元人，可坎价 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;茂陵&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　交大南门坐612到城西客运站西安--兴平，到茂陵站下，5.5人&lt;br /&gt;5块钱一车的蹦蹦车蹦到茂陵博物馆&lt;br /&gt;门票28，今年4月13号以后调价至45元，无学生票，可坎价 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;华山&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　火车站做游1，早8点出发，一天一趟，或者乘坐火车去华山。现在票价学生票90人,保险好像是5人 缆车单程60人，全程110 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;韩城&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　火车：西安至韩城有三趟火车，以及宝鸡经韩城至太原的路线，票价19元，时间4小时&lt;br /&gt;      不过春运期间停开&lt;br /&gt;汽车：西安的城东客运站有大巴，票价50，走高速（西安至禹门口），时间2小时40分&lt;br /&gt;      到达韩城的汽车总站&lt;br /&gt;司马迁祠墓：韩城市内坐101路小中巴公交到南关汽车站，0.5元人；换乘公交旅游专线&lt;br /&gt;直达司马迁祠门口，2.5元人，门票是20元，学生10元；返回仍坐公交旅游专线，&lt;br /&gt; 可以直达文庙，还是每人2.5元。开放时间8：00-18：00（4月1日―10月31日）&lt;br /&gt;紧靠司马迁祠的是红军抗日渡黄河纪念碑（不收门票）&lt;br /&gt;文庙：韩城火车站坐101路到南关（终点站，车费1元），到斜对面换乘102路，&lt;br /&gt;      三站就到了东学巷口，步行3-5分钟就可到达文庙。门票10元 ，导游讲解10元&lt;br /&gt;　　  开放时间――8：00-18：00&lt;br /&gt;党家村：韩城开往下峪口的中巴车途经党家村，车费3元。票30元，学生半价导游讲解20元 &lt;br /&gt;　　    开放时间――全天  详情参见3489贴&lt;br /&gt;　　&lt;br /&gt;　　&lt;strong&gt;黄陵到壶口两日游&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　第一日，早起，火车站坐西安到黄陵的车，三小时到，走高速，下午一点，黄陵到宜川，35元人，住宿&lt;br /&gt;第二日，出租车到壶口，下午返回宜川，做宜川到富县的车，在从富县到西安，或者直接乘坐宜川到西安，早八点下午五点各一趟，75元人 &lt;/p&gt; &lt;p&gt;　　&lt;strong&gt;太白&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;　　从城西客运站乘坐西安到眉县的车，23.5元人，每20分钟一辆，做到大桥口下车（说去太白山，司机就会告诉你的），大桥口有中巴车做到离汤浴比较近的地方，1.5元人，有小车包车上到汤浴，15元车，能做4，5个人的那种。&lt;br /&gt;回：1，汤浴每天早上6点半会有车直接到西安，票价18人。&lt;br /&gt;    2，乘坐游二。下午4点回西安。&lt;br /&gt;    3，汽车站作车，到大桥口，换蹦蹦过桥到高速口，等梅县回西安的车&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;                    &lt;div align="center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-2427753375188359831?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/2427753375188359831/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=2427753375188359831' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2427753375188359831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2427753375188359831'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/05/google_03.html' title='陕西境内主要旅游景点概述 - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-5143256588488128340</id><published>2007-05-01T23:08:00.001-07:00</published><updated>2007-05-17T07:48:09.101-07:00</updated><title type='text'>求陕西商南金丝峡旅游详细情况_百度知道 - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://zhidao.baidu.com/question/9899215.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;求陕西商南金丝峡旅游详细情况_百度知道&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在这里我提供一些情况,我是去过的&lt;br /&gt;首先在西安长途车站坐到商南的车,早上8点,每人大概40多块钱,具体记不清了,然后下车后再坐到金丝峡景区的车,每人15元,2个小时多点会到,下车后先找住的地方,个人推荐农家乐,山里的住宿太贵,划不来,如果2个人去的话包一个单间只要30元,住下后先去买门票,门票50元,工作人员会在票上盖个章,当天进去一次第二天还可以进,因为你买票的时候已经是下午很晚了,进去后大概看看转转就出来,晚上在外面有夜市,吃点小吃,然后回去睡觉,第二天一大早就进山,至于进去怎么玩就看你们自己了,里面有路标的,主要就是看瀑布,里面有很多瀑布,还有漂流.&lt;br /&gt;需要注意的是,如果你们想玩的尽兴,那么就好好玩,到晚上太阳下山再出来,然后在农家乐再住一晚,第3天清早再坐车回商南,然后回西安,如果赶时间的话,那么就要在进山当天下午1点之前一定要出来,因为商南回西安的车最晚是下午3点的,这样你们玩的时间就很紧张,根据你们自己的情况定吧,基本情况就是这么多,风景我就不给你描述了.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-5143256588488128340?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/5143256588488128340/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=5143256588488128340' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/5143256588488128340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/5143256588488128340'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/05/google_01.html' title='求陕西商南金丝峡旅游详细情况_百度知道 - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-2588112382778036043</id><published>2007-05-01T02:33:00.001-07:00</published><updated>2007-05-17T07:49:00.126-07:00</updated><title type='text'>求inetinfo.exe 消耗%100的CPU资源的解决方法!!!!!!! - 【 Windows操作系统 】 - 《我是网管》论坛 - 畅通网络 因为有我 - 使用 Google 工具栏进行发送</title><content type='html'>&lt;a href="http://www.54master.com/bbs/thread-18134-1-1.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;求inetinfo.exe 消耗%100的CPU资源的解决方法!!!!!!! - 【 Windows操作系统 】 - 《我是网管》论坛 - 畅通网络 因为有我&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; inetinfo.exe主要是IIS admin进程调用，所以一般当出现进程里inetinfo.exe占用CPU近100%资源时，很有可能是以下两种情况引起。&lt;br /&gt;&lt;span&gt;*Xaul?8`;AMi《我是网管》论坛&lt;/span&gt;第一种是机器之前有非正常断电重起，导致IIS日志进程异常，在internet管理器里关闭所有站点的IIS日志写记录即可恢复正常。&lt;br /&gt;&lt;span&gt;or.r/v\网管,网管论坛,网管软件,网管下载,网管技术,网络技术,网管社区,网管博客,企业网管,网吧网管,网吧管理,病毒,木马,下载,服务器,操作系统,数据库,路由器,交换机,防火墙,网络工程,布线,网络编程,游戏,网络基础,硬件,网页制作&lt;/span&gt;第二种是遭攻击，主要在135端口，上网查查IP策略，屏蔽任何端口源到本地的135端口即可&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-2588112382778036043?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/2588112382778036043/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=2588112382778036043' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2588112382778036043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2588112382778036043'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/05/inetinfoexe-100cpu-windows-google.html' title='求inetinfo.exe 消耗%100的CPU资源的解决方法!!!!!!! - 【 Windows操作系统 】 - 《我是网管》论坛 - 畅通网络 因为有我 - 使用 Google 工具栏进行发送'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-3776825464085539075</id><published>2007-04-20T22:05:00.001-07:00</published><updated>2007-05-17T07:49:28.108-07:00</updated><title type='text'>李文雄：总结几个产生上万流量的方法-SEO,流量,</title><content type='html'>&lt;a href="http://www.20ju.com/V6115.htm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;李文雄：总结几个产生上万流量的方法-SEO,流量,草根网IT资讯精读(20ju.com)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;总&lt;/p&gt;&lt;span&gt;结几个做网站过程中学到和实践中的增加网站流量的方法:&lt;br /&gt;&lt;br /&gt;1. 网站分流:利用现有的流量，带动新站的流量，比如可以在现有的网页中加入弹出代码，在显眼的位置上放上引人注目的字眼，都可以吸引人点击，一旦新网站的内容足够吸引人，则可以守住固定访问群.&lt;br /&gt;&lt;br /&gt;2. 搜索引擎优化:一个新网站没有做过广告，它的流量大部分是从搜索而来的.总结一些心得如下:&lt;br /&gt;从新站0IP到3000IP以上的基本流程:&lt;br /&gt;&lt;br /&gt;A. 网站建好，没有断链，结构不能太深，网站目录结构一次就定好，因为网站结构的更改容易使排名下滑，最好两级目录，每个目录都优化一个关键词，每页都仔细优化，加上关键字，不要多，每页放一两个关键字就可以.每页都能有清淅的导航，最好每页都能进入网站的任一页(虽不可能，但尽量.要做个全站的索引页，地图页.)，如果不会做网页，就下载一个博客程序吧，生成静态那种，，这是SEO是很有用的，因为你可以把关键词用拼音或是英文作为文件名，容易被搜到.&lt;br /&gt;&lt;br /&gt;B. 提交搜索入口，有条件就和有些PR的站交换链接，没有的话就到搜索引擎常光顾的论坛上发带链接的贴子(site:&lt;a href="http://xxx.com/bbs/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;xxx.com/bbs/&lt;/a&gt;就可以看出搜索引擎是不是常收录这个论坛的东东了)&lt;br /&gt;&lt;br /&gt;C. 每天更新首页一次，加点内容，增加些外部链接等，哪怕是对方没有和你链接，你也是可以链接别人的，不要以为吃了亏，大概搜索引擎的算法体现了互联网"分享"的精神吧，向搜索引擎推荐外部链接的好处是大大的，由其是链一些和你站内容相关而又流量大的，PR分高些的网站.网站的活跃度越高，搜索爬虫就越是经常光顾你的网站，当然收录的机会和收录网页的数量也越多喽.&lt;br /&gt;&lt;br /&gt;D. 每星期至少与他人交换一个链接，毕竟，反链还是需要的.&lt;br /&gt;&lt;br /&gt;E. 在百度热门词列表中找到流量大的词，做一个有关这个词的的网页，这个网页最好控制在20KB之内.然后做些这个网页的反链.&lt;br /&gt;&lt;br /&gt;F. 这样子过了一些时候，你在计数器中会发现网站被一些搜索引擎收录了，那就非常好做了，每每看看哪些词的网页点的人多些，这时你就改改这个网页，可以为这个网页多加些内容，或者为个关键词建一个目录，做成一个小小的站中站等等，当然要花些功夫了.&lt;br /&gt;&lt;br /&gt;G. 这样过了一年，可能你的网页数量就有了300至400页了，如果每页都能有10个人通过搜索引擎找到你的网站，那不就是3000-4000IP了吗，如果每个人都看两三页，那PV不就是1万左右了吗，这样子流量就产生了.&lt;br /&gt;&lt;br /&gt;H. 利用网摘来增加流量，网摘站最近好多，但有流量的不是很多.可以在这些网站上注册个帐号，收录自己的网页，如能在首页出现，流量是不少的.&lt;br /&gt;&lt;br /&gt;4. 常常看到有些热门关键词的第一位点击进去却跑到别的网站内容去了，听说这些高手用的方法是cloaking，这个方法比较冒险，成本高些，但效果是不错的，不过方法不太道德，我也不会.&lt;br /&gt;&lt;br /&gt;5. 到流量大的论坛发些好贴子，就像我这样，可能也能带些流量过来，但比做SEO累多了，文采好就试试吧&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-3776825464085539075?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/3776825464085539075/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=3776825464085539075' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/3776825464085539075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/3776825464085539075'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/04/seo.html' title='李文雄：总结几个产生上万流量的方法-SEO,流量,'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-2645331829455389450</id><published>2007-04-20T22:01:00.001-07:00</published><updated>2007-05-17T07:49:59.810-07:00</updated><title type='text'>如何提高网站的PageRank值及计算公式-SEO,PageRank,</title><content type='html'>&lt;a href="http://www.20ju.com/V6583.htm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;如何提高网站的PageRank值及计算公式-SEO,PageRank,草根网IT资讯精读(20ju.com)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;什&lt;/p&gt;&lt;span&gt;么是pagerank? PageRank 是 Google 对网页重要性的评估；&lt;br /&gt;&lt;br /&gt;　　PageRank值的提高可有效提升你的网页在Google搜索引擎中的页面排名，但并不是说PageRank越高则排名越靠前。有一些网站尽管PageRank不算高，但却较一些PageRank高的网站排名还要靠前。所以你应该在对网站优化的同时，也要努力提高网站的PR值。提高PR最佳和最简单的办法在于：&lt;br /&gt;&lt;br /&gt;　　 1. 提供有趣、有价值的网站内容，这样站长们会主动和你进行友情链接，从而提高你的外部链接值。&lt;br /&gt;&lt;br /&gt;　　 2. 将网站提交到各大搜索引擎，这样可显著改善你的网站在Google上的排名。&lt;br /&gt;&lt;br /&gt;　　 3. 可将网站添加到行业门户站点、网上论坛、留言簿等等各种允许添加网址链接的地方。&lt;br /&gt;&lt;br /&gt;　　 4. 与其他网站交换链接来提高链接权值。&lt;br /&gt;&lt;br /&gt;　　 5. 与其他网站交换链接时首先要查看对方站点是否被Google删除，或是否被Google收录，没有被Google收录的站点最好不要做连接。&lt;br /&gt;&lt;br /&gt;获得友情链接的PR值计算方式：&lt;br /&gt;PR(A) = (1-d)+ d(PR(t1)/C(t1)+ ... + PR(tn)/C(tn))&lt;br /&gt;&lt;a href="http://%e5%a6%82%e6%9e%9cblog.sina.com.cn/seo" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;如果blog.sina.com.cn/seo&lt;/a&gt;的PR=4，&lt;a href="http://blog.sina.com.cn/seo" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; blog.sina.com.cn/seo&lt;/a&gt;只有1个链接，并且链接到您的站点&lt;br /&gt;PR(A) = (1-0.85) + 0.85*(4/1)&lt;br /&gt;=0.15+0.85*4&lt;br /&gt;=0.15+3.40&lt;br /&gt;=3.55&lt;br /&gt;那么你就会获得3.55分！这还不算其它网站给您的分。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://%e5%a6%82%e6%9e%9cblog.sina.com.cn/seo" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;如果blog.sina.com.cn/seo&lt;/a&gt;只有2个链接，并且链接到您的站点&lt;br /&gt;PR(A) = (1-0.85)+ 0.85*(4/2)&lt;br /&gt;=0.15+0.85*2&lt;br /&gt;=0.15+1.70&lt;br /&gt;=1.85&lt;br /&gt;&lt;br /&gt;如果10个PR=0的网站链接到您的站点&lt;br /&gt;PR(A) = (1-0.85) + 0.85*(0/N) + 0.85*(0/N) + ... + 0.85*(0/N)&lt;br /&gt;=0.15+0&lt;br /&gt;=0.15&lt;br /&gt;所以你只能获得0.15PR分。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-2645331829455389450?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/2645331829455389450/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=2645331829455389450' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2645331829455389450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/2645331829455389450'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/04/pagerank-seopagerank.html' title='如何提高网站的PageRank值及计算公式-SEO,PageRank,'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-9076880104559826130</id><published>2007-04-13T02:05:00.001-07:00</published><updated>2007-05-17T07:50:23.853-07:00</updated><title type='text'>jsp图片验证码错误问题的解决</title><content type='html'>今天在给客户安装系统的时候发现在登录页面的图片验证码不能显示出来，单独请求这个文件的时候就出现下面的提示&lt;br /&gt;javax.imageio.IIOException: Can't create output stream!&lt;br /&gt;经过对源程序的追踪分析，最后发现错误是在&lt;br /&gt;&lt;h3&gt;createOutputStreamInstance&lt;/h3&gt;函数中产生的，查找该函数的api文档如下：&lt;br /&gt;&lt;h3&gt; createOutputStreamInstance&lt;/h3&gt; &lt;pre&gt;public &lt;a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/imageio/stream/ImageOutputStream.html" title="javax.imageio.stream 中的接口"&gt;ImageOutputStream&lt;/a&gt; &lt;b&gt;createOutputStreamInstance&lt;/b&gt;(&lt;a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html" title="java.lang 中的类"&gt; Object&lt;/a&gt; output)&lt;br /&gt;                                            throws &lt;a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/IOException.html" title="java.io 中的类"&gt;IOException&lt;/a&gt;&lt;/pre&gt; &lt;dl&gt;&lt;dd&gt;返回与此服务提供程序关联的 &lt;code&gt;ImageOutputStream&lt;/code&gt; 实现的实例。如果需要，将在系统相应的默认临时文件目录中创建缓存文件。 &lt;p&gt; &lt;/p&gt;&lt;/dd&gt;&lt;dd&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;参数：&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;output&lt;/code&gt; - 一个由 &lt;code&gt;getOutputClass&lt;/code&gt; 返回的类类型的对象。 &lt;/dd&gt;&lt;dt&gt;&lt;b&gt;返回：&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;一个 &lt;code&gt;ImageOutputStream&lt;/code&gt; 实例。 &lt;/dd&gt;&lt;dt&gt;&lt;b&gt;抛出：&lt;/b&gt; &lt;/dt&gt;&lt;dd&gt;&lt;code&gt;&lt;a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/IllegalArgumentException.html" title="java.lang 中的类"&gt;IllegalArgumentException&lt;/a&gt;&lt;/code&gt; - 如果 &lt;code&gt;output&lt;/code&gt; 不是一个正确的类的实例，或者为 &lt;code&gt; null&lt;/code&gt;。 &lt;/dd&gt;&lt;dd&gt;&lt;code&gt;&lt;a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/IOException.html" title="java.io 中的类"&gt;IOException&lt;/a&gt;&lt;/code&gt; - 如果需要缓存文件但无法创建。&lt;/dd&gt;&lt;dt&gt;&lt;b&gt;另请参见：&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/imageio/spi/ImageOutputStreamSpi.html#getOutputClass%28%29"&gt; &lt;code&gt;getOutputClass()&lt;/code&gt;&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;呵呵~，原来是少临时目录呀，在tomcat目录下创建temp的文件夹，然后刷新页面。。。。OK!问题解决&lt;br /&gt;&lt;/dt&gt;&lt;/dl&gt; &lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-9076880104559826130?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/9076880104559826130/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=9076880104559826130' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/9076880104559826130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/9076880104559826130'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/04/jsp.html' title='jsp图片验证码错误问题的解决'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-450864586322122331</id><published>2007-04-12T23:42:00.001-07:00</published><updated>2007-04-12T23:55:27.524-07:00</updated><title type='text'>TOMCAT5在WINDOWS下的系统服务相关的命令行</title><content type='html'>&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="font-size: 12pt; padding-top: 10px;" align="center" height="40" width="99%"&gt;&lt;b&gt; TOMCAT5在WINDOWS下的系统服务相关的命令行 &lt;/b&gt;      &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td style="border-bottom: 1px solid rgb(204, 204, 204);" align="center" height="30"&gt;  来源： 作者： 发布时间：2007-02-13    &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;  &lt;td height="300" valign="top"&gt; &lt;table style="margin-top: 8px;" border="0" cellpadding="0" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt;  &lt;td height="52" width="6"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;   &lt;p&gt;&lt;strong&gt;先说说Tomcat5.exe和Tomcat5w是干什么的。&lt;br /&gt;Tomcat5.exe可以把Tomcat加入服务；Tomcat5w.exe可以辅助配置已经添加的服务。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Tomcat5w.exe 监控程序&lt;br /&gt;Tomcat5w是一个监控和配置Tomcat服务的图形界面应用程序。可用的命令行选项如下：&lt;/p&gt;&lt;p&gt;//ES// 编辑服务配置，这是缺省的选项。如果没有提供任何选项，却把tomcat5w.exe重命名为%SERVICE_NAME%.exe 运行的话，这个选项就被调用。&lt;br /&gt;//MS// 监控服务，讲图标放置到系统托盘中。&lt;/p&gt;&lt;p&gt;Tomcat5.exe 服务程序&lt;br /&gt;命令行选项&lt;br /&gt;每一个命令行指令都形如//XX//ServiceName&lt;/p&gt;&lt;p&gt;可用的命令行选项如下：&lt;/p&gt;&lt;p&gt;The ServiceName is the name of the executable without exe sufix, meaning Tomcat5&lt;br /&gt;//TS// 控制台应用程序模式运行服务，这是缺省的操作。在没有提供任何选项开关的时候，它被调用。服务名是执行文件没有exe后缀的部分，如Tomat5。&lt;br /&gt;//RS// Run Service的缩写，运行服务，在服务管理器(Sevices.msc)中启动服务的时候被调用。&lt;br /&gt;//SS// Stop Service的缩写，停止服务，在服务管理器中停止服务时被调用。&lt;br /&gt;//US// Update Service的缩写，更新服务参数。&lt;br /&gt;//IS// Install service 的缩写，安装服务 。&lt;br /&gt;//DS// Delete service的缩写，删除服务，如果服务正在运行，首先删除服务。 &lt;/p&gt;&lt;p&gt;命令行参数&lt;br /&gt;每一个命令行参数以"--"开头。如果命令行以"  "为前缀，则它的值附加到存在的选项上。如果存在和命令行参数有同样的名字，但是以PR_开头的环境变量，它将被优先使用。例如：&lt;br /&gt;set PR_CLASSPATH=xx.jar&lt;br /&gt;等同于&lt;br /&gt;--Classpath=xx.jar&lt;br /&gt;作为命令行参数。&lt;/p&gt;&lt;p&gt;参数名 缺省值 描述&lt;br /&gt;--Description  服务名描述 (最多1024个字符) &lt;br /&gt;--DisplayName ServiceName 服务显示名称&lt;br /&gt;--Install procrun.exe //RS//ServiceName 安装服务&lt;br /&gt;--Startup  manual Service 服务启动模式，可以是自动或者手动，值分别为：auto和manual&lt;br /&gt;--DependsOn  列举此服务依赖的所有服务. 被依赖的服务用#或者;分隔。&lt;br /&gt;--Environment  列决提供给服务使用的环境变量，形如key=value。多个环境变量之间用#或者;分隔。&lt;br /&gt;--User  运行服务使用的用户账号。 只有在运行于没有"作为服务登录"权限下的账户中使用StartMode java 或者作为服务的exe可运行程序选项的情况下才被使用。&lt;br /&gt;--Password  --User参数中用户的密码&lt;br /&gt;--JavaHome JAVA_HOME 定义了JAVA_HOME环境变量时，设置一个不同的JAVA_HOME环境变量&lt;br /&gt;--Jvm auto 用auto或指定jvm.dll的全路径。这里可以使用环境变量表达式。&lt;br /&gt;--JvmOptions -Xrs  列举形如-D 或 -X 的开关传递给JVM虚拟机。多个选项开关之间用#或者;分隔。&lt;br /&gt;--Classpath  设置Java的ClassPath环境变量。&lt;br /&gt;--JvmMs  设置初始使用的内存池容量，单位为MB。&lt;br /&gt;--JvmMx  设置最大使用的内存池容量，单位为MB。&lt;br /&gt;--JvmSs  线程堆栈容量，单位为KB&lt;br /&gt;--StartImage  要被运行的可执行文件&lt;br /&gt;--StartPath  开始运行可执行文件的工作路径&lt;br /&gt;--StartClass  启动时使用的类&lt;br /&gt;--StartParams  列决要传递给StartImage 或 StartClass的参数。多个参数之间用#或者;分隔。&lt;br /&gt;--StartMethod Main 启动服务调用的方法，如果不是main，这里写上方法名&lt;br /&gt;--StartMode executable 可以是jvm、java或exe 之一&lt;br /&gt;--StopImage  停止服务调用的可执行文件&lt;br /&gt;--StopPath  停止服务执行的文件的工作路径&lt;br /&gt;--StopClass  停止服务调用的类&lt;br /&gt;--StopParams  列决要传递给 StopImage 或 StopClass 的参数。多个参数之间用#或者;分隔。&lt;br /&gt;--StopMethod Main 停止服务调用的方法，如果不是main，这里写上方法名&lt;br /&gt;--StopMode executable 可以是jvm、java或exe 之一&lt;br /&gt;--StopTimeout No Timeout 定义一个服务顺利退出的延时，单位为秒。&lt;br /&gt;--LogPath 定义日志路径&lt;br /&gt;--LogPrefix jakarta_service 定义日志文件名前缀&lt;br /&gt;--LogLevel INFO 定义日志等级，可选值：error, info, warn或debug&lt;br /&gt;--StdOutput  重定向stdout文件名&lt;br /&gt;--StdError  重定向Stderr文件名&lt;/p&gt;&lt;p&gt;安装服务&lt;br /&gt;手动安装服务最安全的方法就是使用service.bat脚本。&lt;/p&gt; &lt;p&gt;使用service.bat安装名字为Tomcat5的服务&lt;br /&gt;C:/&amp;gt; service.bat install Tomcat5&lt;/p&gt;&lt;p&gt;如果使用tomcat5.exe安装名字为Tomcat5的服务，你需要使用//IS//参数。&lt;br /&gt;C:/&amp;gt; tomcat5 //IS//Tomcat5 --DisplayName=Apache Tomcat 5 --Install=C:/Program Files/Tomcat/bin/tomcat5.exe --Jvm=auto --StartMode=jvm --StopMode=jvm --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop&lt;/p&gt;&lt;p&gt;更新服务&lt;br /&gt;要更新服务的参数，你需要使用tomcat5.exe的//US//参数。&lt;/p&gt;&lt;p&gt;更新名字为Tomcat5的服务&lt;br /&gt;C:/&amp;gt; tomcat5 //US//Tomcat5 --Description=Apache Tomcat Server - &lt;span style="color:#000033;"&gt; &lt;a href="http://jakarta.apache.org/tomcat"&gt;http://jakarta.apache.org/tomcat&lt;/a&gt;&lt;/span&gt;   --Startup=auto --Classpath=%JAVA_HOME%/lib/tools.jar;�TALINA_HOME%/bin/bootstrap.jar&lt;/p&gt;&lt;p&gt;移除服务&lt;br /&gt;要移除服务，你需要使用tomcat5.exe的//DS//参数。如果服务正在运行，将首先关闭然后删除。 &lt;/p&gt;&lt;p&gt;移除名字为Tomcat5的服务&lt;br /&gt;C:/&amp;gt; tomcat5 //DS//Tomcat5&lt;/p&gt;&lt;p&gt;调试服务&lt;br /&gt;如 果需要在控制台模式运行服务，应该使用//TS//参数。此时若要关闭服务必须使用CTRL C 或者 CTRL BREAK关闭控制台。如果你将tomcat5.exe 更名为 testservice.exe那么你应该运行testservice.exe，命令模式将被缺省运行。&lt;br /&gt;在控制台模式下运行命称为Tomcat5 的服务&lt;br /&gt;C:/&amp;gt; tomcat5 //TS//Tomcat5 [additional arguments]&lt;br /&gt;或者简单地运行：&lt;br /&gt;C:/&amp;gt; tomcat5&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-450864586322122331?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/450864586322122331/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=450864586322122331' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/450864586322122331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/450864586322122331'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2007/04/tomcat5windows.html' title='TOMCAT5在WINDOWS下的系统服务相关的命令行'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116513890029682299</id><published>2006-12-03T01:41:00.000-08:00</published><updated>2007-04-06T00:43:21.225-07:00</updated><title type='text'>食 品 相 克 列 表</title><content type='html'>&lt;table align="center" bgcolor="#ffffcc" border="0" cellpadding="2" cellspacing="1" width="760"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#fff7d7"&gt;&lt;div align="center"&gt;&lt;strong&gt;食 品 相 克 列 表&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td bgcolor="#fff1bb"&gt;&lt;br /&gt;      1.猪肉菱角若共食,肚子疼痛不好受. 2.牛肉栗子一起吃,食后就会发呕吐.&lt;img src="http://www.0451-114.com/html/service/eathelp/images/19697.jpg" align="right" border="1" height="182" width="200" /&gt;&lt;br /&gt;      3.羊肉滋补大有用,若遇西瓜定相侵. 4.狗肉滋补需注意,若遇绿豆定伤身.&lt;br /&gt;      5.兔肉芹菜本不合,同食之后头发脱. 6.鸡肉芹菜也相忌,同食就会伤元气.&lt;br /&gt;      7.鹅肉鸡蛋不同窝,一同入胃伤身体. 8.鲤鱼甘草性相反,兼食而之定伤身.&lt;br /&gt;      9.黄鳝皮蛋皆佳肴,不可同桌结伴行. 10.鸡蛋若遇消炎片,同室操戈两相争.&lt;br /&gt;      11.鸡蛋糖精更相克,同食中毒更伤身. 12.柿子红薯若同吃,体内结石易形成.&lt;br /&gt;      13.柿子螃蟹也相背,同食之后会腹泻. 14.柿子白酒更不合,食后使你心发闷.&lt;br /&gt;      15.豆腐蜂蜜伴着吃,味道虽好耳要聋. 16.洋葱蜂蜜也不合,同食就会伤眼睛.&lt;br /&gt;      17.香蕉芋头本不合,同时入胃腹胀痛. 18.香蕉相克马铃薯,同食面部要起斑.&lt;br /&gt;      19.黄瓜生熟都可以,进食之际忌花生. 20.萝卜木耳不同食,食了容易生皮炎.&lt;br /&gt;      21.萝卜水果更相背,甲状腺肿会诱发.&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td bg height="948" valign="top" style="color:#ffea93;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;　*&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;　以下食物两小时内不能同时食用，否则会发生中毒，甚至有生命危险，千万不可大意,提供中毒解救小窍门，供参考：&lt;/strong&gt;&lt;br /&gt;     &lt;br /&gt;      &lt;img src="http://www.0451-114.com/html/service/eathelp/images/19698.jpg" align="left" height="171" width="200" /&gt;脚鱼与苋菜：食则死亡。解救：吃空心菜汁&lt;br /&gt;      鲤鱼与甘草：食则死亡。解救：吃麻油二两；&lt;br /&gt;      狗肉和绿豆：食则胀腹。解救：甘草一两煎水服；&lt;br /&gt;      桃子下烧酒：食则昏倒，多吃死亡。解救：服牛黄解毒丸三粒；&lt;br /&gt;      黄瓜与花生：食则泻肚。解救：吃藿香正气丸二粒；&lt;br /&gt;      蜂糖与生葱：食则死亡。解救：米炒枯研末，再用甘草二两煎水冲枯米吃；&lt;br /&gt;      茶煮青蛙：食则死亡，无法解救；&lt;br /&gt;      蚕豆与田螺：食则绞畅痛。解救：吃儿童小便二两；&lt;br /&gt;      香蕉与芋头：食则中毒。解救：吃桐油五钱；&lt;br /&gt;      冰棒与西红柿：食则中毒。解救：吃穿心莲二两煎水服；&lt;br /&gt;      羊肉和西瓜：食则中毒。解救：甘草二两煎水服；&lt;br /&gt;      猪肉和芝麻花：食则死亡。解救：吃空心菜汁二两；&lt;br /&gt;      芥菜与兔肉：食则死亡。解救：吃杨梅水二两；&lt;br /&gt;      不可单用生姜下酒：食则胃脘痛，多吃则烂肝脏；&lt;br /&gt;      冬笋和龟肉：食则中毒。解救：甘草二两煎水服；&lt;br /&gt;      鲫鱼与冬瓜：食则脱水。解救：吃空心菜汁二两；&lt;br /&gt;      黄疸病忌马肉：食则死亡。无法解救&lt;br /&gt;      甜酒与味精：食则中毒。解救：甘草煎水服；&lt;br /&gt;      牛肉与香附子：食则生九子疡；&lt;br /&gt;      油煎鸡蛋与糖精：食则中毒。解救：牛黄五分，开水服；&lt;br /&gt;      鹿肉与南瓜：食则死亡。无法解救；&lt;br /&gt;      抬头黄鳝不能吃：食则死亡。无法解救；&lt;br /&gt;      洋葱与癞蛤蟆：食则死亡。解救：车钱子一两水煎服；&lt;br /&gt;      红薯与柿子：食则胃结石，多吃死亡；&lt;br /&gt;      螃蟹与柑桔：食则中毒。解救：吃大蒜汁；&lt;br /&gt;      螃蟹与柿子：食则中毒。解救：吃藕节（煮水）&lt;br /&gt;      螃蟹与泥鳅：食则中毒。解救：吃黄泥水&lt;br /&gt;      螃蟹与茄子：食则中毒。解救：吃藕节（煮水）&lt;br /&gt;      螃蟹与香瓜：食则中毒。解救：吃柑桔皮&lt;br /&gt;      螃蟹与生花生：食则中毒。解救：吃黄泥水&lt;br /&gt;      螃蟹与冰水：食则中毒。解救：吃藕节（煮水）&lt;br /&gt;      田螺与玉米：食则中毒。解救：吃黄泥水。&lt;br /&gt;      田螺与香瓜：食则中毒。解救：吃黄泥水。&lt;br /&gt;      鲫鱼与蜂糖；食则中毒。解救：吃黑豆甘汤草&lt;br /&gt;      牛奶与酸醋物：食则腹结石。解救：吃绿豆汤&lt;br /&gt;      牛肉与韭菜：食则中毒。解救：吃人奶或豉汁&lt;br /&gt;      蟮鱼与红枣：吃则脱发。解救：吃蟹&lt;br /&gt;      牛奶与菠菜：食则拉痢。解救：吃绿豆汤&lt;br /&gt;      鳝鱼与南瓜：食则中毒。解救：吃蟹&lt;br /&gt;      竹笋与麦芽糖；食则中毒。解救：吃绿豆汤&lt;br /&gt;      番茄与石榴：食则中毒。解救：吃韭菜汁&lt;br /&gt;      鸡肉与李子：食则拉痢，解救：吃鸡屎白&lt;br /&gt;      鸭蛋与李子：食则中毒。解救：吃黄泥水&lt;br /&gt;      竹笋与羊肝：食则中毒。解救：吃黄泥水&lt;br /&gt;      雀肉与李子：食则中毒。解救：吃鸡屎白&lt;br /&gt;      黑枣与柿子：食则解释。解救：无方&lt;br /&gt;      以上仅供参考，若发生中毒症状，应及时送医院为妥。 &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td bgcolor="#ffe784" valign="top"&gt;1、萝卜： 严禁与桔子同食，同食患甲状腺肿；忌何首乌、地黄；服人参时忌食；忌与胡萝卜同食。&lt;img src="http://www.0451-114.com/html/service/eathelp/images/19706.jpg" align="right" border="1" height="169" width="200" /&gt;&lt;br /&gt;      2、胡萝卜：不宜和西红柿、萝卜、辣椒、石榴、莴苣、木瓜等水果同吃。最好单独吃肉类烹调。&lt;br /&gt;      3、黄瓜： 不宜和维生素c含量高的蔬菜如西红柿、辣椒等同烹调。&lt;br /&gt;      4、甘薯： (红薯、白薯、地瓜、山芋)；不能与柿子同食，二者相聚会形成胃柿石，引起胃胀、腹痛、&lt;br /&gt;      呕吐，严重时可导致胃出血等，危及生命；也不宜与香蕉同吃。&lt;br /&gt;      5、韭菜： 不可与菠菜同食，二者同食有滑肠作用，易引起腹泻；不可与蜂蜜同食，同食则令人心痛；&lt;br /&gt;      不可与牛肉同食，同食令人发热动火。&lt;br /&gt;      6、茄子： 忌与黑鱼、蟹同食，同食有损肠胃；过老熟的茄子不宜食，易中毒。&lt;br /&gt;      7、菠菜： 忌韭菜；不宜与豆腐同食，同食使人缺钙。&lt;br /&gt;      8、小白菜：忌兔肉。&lt;br /&gt;      9、南瓜： 不可与羊肉同食，否则易发生黄疸和脚气；不可与富含维生素c 的蔬菜、水果同食。&lt;br /&gt;      10、竹笋： 不宜与豆腐同食，同食易生结石；不可与鹧鸪肉同食，同食令人腹胀；不可与糖同食;不宜与羊肝同食。&lt;br /&gt;      11、辣椒： 忌与羊肝、南瓜同食。&lt;br /&gt;      12、香菜： 不可与一切补药同食；忌白术、牡丹皮。&lt;br /&gt;      13、莼菜： 忌与醋同食。&lt;br /&gt;      14、茭白： 不宜与豆腐同食，否则易形成结石。&lt;br /&gt;      15、芹菜： 忌同醋食，否则易损齿；不宜与黄瓜同食。&lt;br /&gt;      16、芥菜： 忌与鲫鱼同食，否则易引发水肿。&lt;br /&gt;      17、蕨菜： 忌与黄豆、花生、毛豆等同吃。&lt;br /&gt;      18、菜瓜： 忌与牛奶、奶酪、鱼类同食，否则易生疾病。&lt;br /&gt;      19、山药： 忌鲫鱼、甘遂。&lt;br /&gt;      20、豆腐(豆浆)：不要与牛奶同食；不要与菠菜同烹调；忌用豆浆冲鸡蛋；忌与四环素同用。&lt;br /&gt;      21、木耳： 忌与田螺、雉鸡、野鸭、鹌鹑肉同食；忌与四环素同服&lt;br /&gt;      22、苋菜： 不宜与菠菜、蕨粉同食&lt;br /&gt;      23、苦菜： 不可与蜂蜜同食&lt;br /&gt;      24、花生： 忌蕨菜、毛蟹、黄瓜。&lt;br /&gt;      25、马齿苋：不宜与鳖甲同食。&lt;br /&gt;      26、香瓜： 忌与蟹、田螺、油饼同吃&lt;br /&gt;      27、猪肉： 忌与鹌鹑同食，同食令人面黑；忌与鸽肉、鲫鱼、虾同食，同食令人滞气；忌与荞麦同食,同食令人落毛发；忌与菱角、黄豆、蕨菜、桔梗、乌梅、百合、巴豆、大黄、黄连、苍术同食；忌与牛肉、驴肉、羊肝同食。&lt;br /&gt;      28、猪脑髓：不可与酒、盐同食，影响男子性功能；&lt;br /&gt;      29、羊肉： 忌与豆酱、荞麦面、乳酪、南瓜、醋、赤豆、梅干菜同食；忌铜、丹砂。&lt;br /&gt;      30、鸡肉： 老鸡鸡头不能吃，因毒素滞留在脑细胞内，民间有"十年鸡头生砒霜"的说法；忌与糯米、李子、大蒜、鲤鱼、鳖鱼、虾、兔肉同食；忌芥末、菊花。       &lt;br /&gt;      31、猪油： 不宜与梅子同食。&lt;br /&gt;      32、牛肉： 不可与鱼肉同烹调；不可与栗子、黍米、蜂蜜同食；不宜与韭菜、白酒、生姜同食。&lt;br /&gt;      33、猪肝： 忌与荞麦、黄豆、豆腐同食，同食发痼疾；忌与鱼肉同食，否则令人伤神；忌与雀肉、山鸡、鹌鹑肉同食。&lt;br /&gt;      34、牛肝： 忌鲍鱼、鲇鱼；不宜与富含维生素c的食物同食。&lt;br /&gt;      35、鸭肉： 反木耳、胡桃；不宜与鳖肉同食，同食令人阴盛阳虚，水肿泄泻。&lt;br /&gt;      36、狗肉： 忌与绿豆、杏仁、菱角、鲤鱼、泥鳅同食；忌用茶；不宜与大蒜同食。&lt;br /&gt;      37、猪血： 忌黄豆，同食令人气滞；忌地黄、何首乌。&lt;br /&gt;      38、羊心、 羊肝：忌与生椒、梅、赤豆、苦笋、猪肉同食；不宜与富含维生素c的蔬菜同食。&lt;br /&gt;      39、驴肉： 忌荆芥；不宜与猪肉同食，否则易致腹泻。&lt;br /&gt;      40、马肉： 不宜与大米（粳米）、猪肉同食；忌生姜、苍耳。&lt;br /&gt;      41、鹅肉： 不宜与鸭梨同吃。&lt;br /&gt;      42、鹿肉： 不宜与雉鸡、鱼虾、蒲白同食&lt;br /&gt;      43、雀肉： 春夏不宜食，冬三月为食雀季节。不宜与猪肝、牛肉、羊肉同食；忌李子、白术。&lt;br /&gt;      44、鸡蛋： 忌与柿子同食，同食可引起腹痛、腹泻，易形成"柿结石"；不宜与兔肉、鲤鱼、豆浆同食；民间有吃"毛蛋"之习，其实"毛蛋"中含有大量病菌，易中毒。       &lt;br /&gt;      45、鸭蛋： 不宜与李子、桑椹子同食。&lt;br /&gt;      46、野鸭： 忌与木耳、核桃、荞麦同食&lt;br /&gt;      47、鹧鸪肉：忌与竹笋同食&lt;br /&gt;      48、水獭肉：忌与兔肉、柿子同吃&lt;br /&gt;      49、獐肉： 不宜与虾、生菜、梅子、李子同食&lt;br /&gt;      50、鹌鹑肉：不宜与猪肉、猪肝、蘑菇、木耳同食。&lt;br /&gt;      51、雉鸡（野鸡）不宜与猪肝、鲇鱼、鲫鱼、木耳、胡桃、荞麦同食&lt;br /&gt;      52、猫肉： 忌藜芦；猫肉有伤胎之弊，孕妇忌服。&lt;br /&gt;      53、虾： 严禁同时服用大量维生素c。否则，可生成三价砷，能致死,不宜与猪肉同食损精；忌与狗、鸡肉同食；忌糖。&lt;br /&gt;      54、鲤鱼： 忌朱砂、狗肉。葵菜、赤小豆、咸菜不宜与狗肉同食。&lt;br /&gt;      55、泥鳅： 不宜与狗肉同食。&lt;br /&gt;      56、海带： 不宜与甘草同食。&lt;br /&gt;      57、鲫鱼： 不宜与芥菜、猪肝、猪肉、蒜、鸡肉、鹿肉等同食；忌山药、厚朴、麦冬、甘草。&lt;br /&gt;      58、鳖肉： 忌猪肉、兔肉、鸭蛋、苋菜；忌与薄荷同煮；忌与鸭肉同食，久食令人阴盛阳虚，水肿泄泻。&lt;br /&gt;      59、带鱼、 平鱼、银鱼、黄花鱼：忌用牛、羊油煎炸；凡海味均禁甘草；反荆芥。&lt;br /&gt;      60、龟肉： 不宜与酒、果、瓜、猪肉、苋菜同食。&lt;br /&gt;      61、蜗牛： 忌蝎子。&lt;br /&gt;      62、田螺： 忌与香瓜、木耳、蛤蚧、冰糖同食；忌与四环素同用。&lt;br /&gt;      63、鲶鱼： 不宜与牛肝同食；忌用牛、羊油煎炸；不可与荆芥同用。&lt;br /&gt;      64、鳝鱼： 忌狗血、狗肉，同食助热动风；忌荆芥，同食令人吐,青色鳝鱼有毒，黄色无毒。有毒鳝鱼一次吃250克，可致死。&lt;br /&gt;      65、海鳗鱼：不宜与白果、甘草同食。&lt;br /&gt;      66、青鱼： 忌用牛、羊油煎炸；不可与荆芥、白术、苍术同食。&lt;br /&gt;      67、牡蛎肉：不宜与糖同食。&lt;br /&gt;      68、枣： 不可与海鲜同食，否则令人腰腹疼痛；不可与葱同食，否则令人脏腑不合，头胀。&lt;br /&gt;      69、苹果： 不宜与海味同食（海味与含有鞣酸的水果同吃，则易引起腹痛、恶心、呕吐等）。&lt;br /&gt;      70、鸭梨： 忌鹅肉、蟹；忌多吃；忌与油腻、冷热之物杂食。&lt;br /&gt;      71、桔子： 忌与萝卜同食，同食诱发甲状腺肿；忌与牛奶、蟹、蛤同食。&lt;br /&gt;      72、山楂、 石榴、木瓜、葡萄：不宜与海鲜类、鱼类同食；服人参者忌用；忌铁器；忌和四环素同吃。&lt;br /&gt;      73、桃子： 不宜与鳖肉、龟肉同食。&lt;br /&gt;      74、香蕉： 不宜与白薯同食。&lt;br /&gt;      75、柿子： 忌与蟹、水獭肉同食，同食腹痛、大泻；忌与红薯、酒同食。&lt;br /&gt;      76、杨梅： 忌生葱；不宜与羊肛，鳗鱼同食。&lt;br /&gt;      77、杏： 忌与小米同食，否则令人呕泻。&lt;br /&gt;      78、芒果：忌与大蒜等辛物同食。&lt;br /&gt;      79、银杏（白果）：严禁多吃，婴儿吃10颗左右可致命，三、五岁小儿吃30~40颗可致命；不可与鱼同吃，同食则产生不利于人体的生化反应，小儿尤忌。&lt;br /&gt;      80、柑子：忌与蟹同食。&lt;br /&gt;      81、大米（粳米）：不可与马肉同食，不可与苍耳同食，同食心痛；&lt;br /&gt;      82、黄豆：不宜与猪血、蕨菜同食；服四环素时忌用。&lt;br /&gt;      83、绿豆：不宜与狗肉、榧子同食&lt;br /&gt;      84、小米（粟米）不可与杏同食，同食易使人呕吐泄泻；气滞者忌用。&lt;br /&gt;      85、黑豆：忌与厚朴、蓖麻籽、四环素同用。&lt;br /&gt;      86、红豆：忌与米同煮，食之发口疮；不宜与羊肉同食；蛇咬伤，忌食百日；多尿者忌用。&lt;br /&gt;      87、葱： 不宜与杨梅、蜜糖同食，同食易气壅胸闷；忌枣、常山、地黄。&lt;br /&gt;      88、醋： 忌丹参、茯苓；不宜与海参、羊肉、奶粉同食；忌壁虎，可致死。&lt;br /&gt;      89、糖： 忌虾；不可与竹笋同煮；不宜与牛奶、含铜食物同食。&lt;br /&gt;      90、酒： 忌与汽水、啤酒、咖啡、奶、茶、糖同饮，不然对胃肠、肝、肾脏器官有严重的损害；不宜与牛肉、柿同食。&lt;br /&gt;      91、茶： 贫血病人服用铁剂时，忌饮茶。不宜与狗肉同食；服人参等滋补药品时忌用。&lt;br /&gt;      92、蒜： 一般不与补药同服。忌蜜、地黄、何首乌、牡丹皮；&lt;br /&gt;      93、花椒：忌防风、附子、款冬。&lt;br /&gt;      94、牛奶：忌牛奶中放钙粉；勿用牛奶冲鸡蛋；不宜与巧克力、桔子， 四环素同食。&lt;br /&gt;      95、蜜： 不宜与葱、蒜、韭菜、莴苣、豆腐同食，不然易引起腹泄&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td bgcolor="#ffcc00"&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td bgcolor="#ffcc00"&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116513890029682299?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116513890029682299/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116513890029682299' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116513890029682299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116513890029682299'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/12/blog-post.html' title='食 品 相 克 列 表'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116436488447197953</id><published>2006-11-24T02:41:00.000-08:00</published><updated>2006-11-24T02:48:22.050-08:00</updated><title type='text'>Delphi之面向对象程序开发</title><content type='html'>Delphi之面向对象程序开发&lt;br /&gt;作者：熊建峰   网址：&lt;a href="http://www.passtwo.com"&gt;http://www.passtwo.com&lt;/a&gt;  邮箱:&lt;a href="mailto:passtwo@gmail.com"&gt;passtwo@gmail.com&lt;/a&gt;&lt;br /&gt;　　使用Delphi编程也有一段时间了，Delphi开发程序效率很高，但是一直感觉和VB开发程序没有什么两样，除了语法的区别之外就是在控件、窗体等基础上进行程序开发了，Delphi面向对象开发的特点没有一点体现出来。&lt;br /&gt;　　最近在开发一个应用程序的时候对系统代码进行查看，才恍然大悟，其实，基于Delphi的VCL组件下的开发实际上就已经遵循了面向对象的规则。举例说明如下：&lt;br /&gt;例1：一个普通的Delphi窗体&lt;br /&gt;    我们利用Delphi进行程序开发的时候，首先就是一个窗体，设置好窗体的属性，好了，我们来看看窗体的代码。如下：&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Edit1: TEdit;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;  end;&lt;br /&gt;    首先看看这段代码，定义了一个类型TForm1，它集成自TForm类，同时有两个属性：Edit1和Button1。同时还有可以添加private和public的地方。从面向对象的角度来讲，这属于面向对象的一个典型应用（使用了集成来生成新的类型）。那么，有人会说，在delphi下本来就是这样，跟我的程序有什么关系？我又怎样才能把面向对象的方法应用到我的程序中来呢？下面我来举一个例子说明。&lt;br /&gt;例2：一个简单的继承&lt;br /&gt;　　图1列出了一个大家比较熟悉的继承关系，图中包含三各类：水果，苹果，桔子。水果作为基类，它有两个属性：颜色和重量，另外水果都可以被食用，但是不同的水果有不同的方法，所以在水果类中有一个public abstract void 食用（），所有水果的子类必须实现该方法。苹果和桔子为水果的子类，它们集成了水果的基本特性：颜色和重量，另外它们分别实现了水果的食用（）方法。它们的代码看起来如下：&lt;br /&gt;unit Ufruit;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils, Windows, Messages, Classes, Graphics, Controls,&lt;br /&gt;  Forms, Dialogs;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TFruit = class(TObject)&lt;br /&gt;  private&lt;br /&gt;    mColor: Integer;&lt;br /&gt;    weight: Integer;&lt;br /&gt;  public&lt;br /&gt;    procedure eat; virtual; abstract;&lt;br /&gt;  end;&lt;br /&gt; &lt;br /&gt;  TApple = class(TFruit)&lt;br /&gt;  public&lt;br /&gt;    procedure eat;&lt;br /&gt;  end;&lt;br /&gt; &lt;br /&gt;  TOrange = class(TFruit)&lt;br /&gt;  public&lt;br /&gt;    procedure eat;&lt;br /&gt;  end;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;************************************ TApple ************************************&lt;br /&gt;}&lt;br /&gt;procedure TApple.eat;&lt;br /&gt;begin&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;*********************************** TOrange ************************************&lt;br /&gt;}&lt;br /&gt;procedure TOrange.eat;&lt;br /&gt;begin&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;　　以上的代码是继承关系在Delphi下的编写，那么这些东西怎样才能和VCL组件结合起来，形成我们所熟悉的Form展现给用户呢？下面我们举例说明这个问题&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;图1&lt;br /&gt;例三：使用Form实现水果的集成&lt;br /&gt;    有了我们水果的类图，我们使用Delphi的窗体来对水果集成关系做一个界面出来，首先是基类：TFruit，窗体界面如图2：&lt;br /&gt;&lt;br /&gt;图2&lt;br /&gt;它的代码如下：&lt;br /&gt;unit UFruit;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TfrmFruit = class(TForm)&lt;br /&gt;    mColor: TEdit;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    Label2: TLabel;&lt;br /&gt;    Edit1: TEdit;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;    procedure eat; virtual; abstract;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  frmFruit: TfrmFruit;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TfrmFruit.Button1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  eat;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;接下来我们实现苹果类：选择File-&amp;gt;New-&amp;gt;Other-&amp;gt;project1，如图3所示&lt;br /&gt;&lt;br /&gt;图3&lt;br /&gt;点击ok后，将出现苹果类的窗体（有没有感觉和水果类很像呀^_^），更改窗体的caption和name属性，然后实现fruit的eat方法，好了，我们的苹果类就做好了，如图4：&lt;br /&gt;&lt;br /&gt;图4&lt;br /&gt;它的代码如下：&lt;br /&gt;unit UApple;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, UFruit, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TfrmApple = class(TfrmFruit)&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;     procedure eat;override;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  frmApple: TfrmApple;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;{ TfrmApple }&lt;br /&gt;&lt;br /&gt;procedure TfrmApple.eat;&lt;br /&gt;begin&lt;br /&gt;  Application.MessageBox ('我是苹果，吃起来是甜的！','',32);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;同样的方法，实现桔子类，程序界面如图：&lt;br /&gt;&lt;br /&gt;图5&lt;br /&gt;代码如下：&lt;br /&gt;unit UOrange;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, UFruit, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TfrmOrange = class(TfrmFruit)&lt;br /&gt;  private&lt;br /&gt;    { Private declarations }&lt;br /&gt;  public&lt;br /&gt;    { Public declarations }&lt;br /&gt;    procedure eat;override;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  frmOrange: TfrmOrange;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;{ TfrmOrange }&lt;br /&gt;&lt;br /&gt;procedure TfrmOrange.eat;&lt;br /&gt;begin&lt;br /&gt;  Application.MessageBox('我是桔子，吃起来是酸的！','',32);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;小结&lt;br /&gt;    以上我们使用Delphi的窗体实现了水果类、苹果类和桔子类，这样，就将实际的业务类和VCL组件类结合起来了。使用同样的方法，我们在进行数据库编程的时候可以首先考虑进行业务建模，然后画出类图，最后使用Delphi的窗体来完成整个程序的开发。我写这篇文章旨在抛砖引玉，欢迎大家一起讨论。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116436488447197953?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116436488447197953/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116436488447197953' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116436488447197953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116436488447197953'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/11/delphi.html' title='Delphi之面向对象程序开发'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116286542435619281</id><published>2006-11-06T18:10:00.000-08:00</published><updated>2006-11-06T18:10:24.850-08:00</updated><title type='text'>针对URL的SEO方法-随想飞翔</title><content type='html'>&lt;a href="http://www.5iya.com/blog/post/seo_for_url.asp"&gt;针对URL的SEO方法-随想飞翔&lt;/a&gt;: "以下仅是个人经验，未经任何试验验证，请自行判断以下方法是否可行，使用如下方法进行SEO，任何后果自负。&lt;br /&gt;&lt;br /&gt;作者：Cloudream http://www.5iya.com/blog/&lt;br /&gt;转载请注明以上信息&lt;br /&gt;&lt;br /&gt;匹配指匹配用户搜索关键字。&lt;br /&gt;&lt;br /&gt;  1. 主域名匹配优于目录名或网页名匹配。&lt;br /&gt;  2. 英文关键字之间应使用 - 或 _ 链接。&lt;br /&gt;  3. 针对中文关键字，中文目录名和网页名优于英文目录名和网页名。Google、百度可识别中文目录名和网页名，但其它搜索引擎未知。中文目录名和网页名可能导致部分浏览器无法识别该URL。&lt;br /&gt;  "&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116286542435619281?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.5iya.com/blog/post/seo_for_url.asp' title='针对URL的SEO方法-随想飞翔'/><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116286542435619281/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116286542435619281' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116286542435619281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116286542435619281'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/11/urlseo.html' title='针对URL的SEO方法-随想飞翔'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116286442826808982</id><published>2006-11-06T17:53:00.000-08:00</published><updated>2006-11-06T17:53:48.620-08:00</updated><title type='text'>Google Adsense 提示100条-随想飞翔</title><content type='html'>&lt;a href="http://www.5iya.com/blog/post/100_google_adsense_tips.asp"&gt;Google Adsense 提示100条-随想飞翔&lt;/a&gt;: "译注：少数条目有重复，不重新编排以遵从原文。&lt;br /&gt;&lt;br /&gt;  1. AdSense 收入 = 广告展示次数 x 点击率 x 点击单价 x 智能定价因素（Smart Price）&lt;br /&gt;  2. 广告展示次数基于你的网站流量，该项代表Adsense广告展示次数。（译注：废话－。－！）&lt;br /&gt;  3. 点击率为广告被点击次数÷广告展示次数，基本范围为0.1%-30%，大多数为1%-10%（译注：中文广告偏低，大陆地区平均点击率约0.2%）。&lt;br /&gt;  4. 点击单击为每次点击的收入，一般根据广告商付出的点击单价决定。&lt;br /&gt;  5. 智能定价机制为Google衡量你的网站刊登广�"&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116286442826808982?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.5iya.com/blog/post/100_google_adsense_tips.asp' title='Google Adsense 提示100条-随想飞翔'/><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116286442826808982/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116286442826808982' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116286442826808982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116286442826808982'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/11/google-adsense-100.html' title='Google Adsense 提示100条-随想飞翔'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116247966658644941</id><published>2006-11-02T07:01:00.000-08:00</published><updated>2006-11-02T07:01:07.736-08:00</updated><title type='text'>计算机二级上机考试评分方法 - QQread.com 教育频道</title><content type='html'>&lt;a href="http://edu.qqread.com/jisuanji/g785480101.html"&gt;计算机二级上机考试评分方法 - QQread.com 教育频道&lt;/a&gt;: "计算机二级上机考试评分方法&lt;br /&gt;http://edu.qqread.com 　作者:玲珑草草 来源:&lt;br /&gt;&lt;br /&gt;　　上机必读&lt;br /&gt;二级上机考试部分评分方法&lt;br /&gt;&lt;br /&gt;　　自动评分系统有客观、公正的优点，但也有死板的缺点，要想得到比较好的分数，应当考虑到机器的这一特点。实际考试还有人工复查一项,由省级考试部门负责进行.但是人工复查如何进行，我们完全不得而知。因此我们下面的所有内容均不含人工复查内容，仅从考试系统本身来进行分析和说明。&lt;br /&gt;　　我们从多次使用中摸索�"&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116247966658644941?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://edu.qqread.com/jisuanji/g785480101.html' title='计算机二级上机考试评分方法 - QQread.com 教育频道'/><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116247966658644941/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116247966658644941' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116247966658644941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116247966658644941'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/11/qqreadcom.html' title='计算机二级上机考试评分方法 - QQread.com 教育频道'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116175522879453569</id><published>2006-10-24T22:47:00.000-07:00</published><updated>2006-10-24T22:47:09.003-07:00</updated><title type='text'>给控件做数字签名之三:进行数字签名 - 阿泰的软件实用主义 - 博客园</title><content type='html'>&lt;a href="http://www.cnblogs.com/babyt/articles/118309.html"&gt;给控件做数字签名之三:进行数字签名 - 阿泰的软件实用主义 - 博客园&lt;/a&gt;: "双击工具包里的signcode.exe&lt;br /&gt;文中提到的数字签名工具包，请在此处下载&lt;br /&gt;http://www.cnblogs.com/Files/babyt/SignTool.rar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;至此，数字签名完成&lt;br /&gt;在DOS窗口下，输入&lt;br /&gt;chktrust.exe E:\myTest\08\Package\WebRTF.CAB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;对我们的成果进行检验&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;此时成功，对了，这个“恭喜”的红字是我做上去的，可别到时候这俩字出不来还觉得奇怪&lt;br /&gt;&lt;br /&gt;最后就是发布了&lt;br /&gt;&lt;br /&gt;将这两个文件拷贝到WEB目录下进行测试,出现证书安装提示后按是安装即可&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116175522879453569?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cnblogs.com/babyt/articles/118309.html' title='给控件做数字签名之三:进行数字签名 - 阿泰的软件实用主义 - 博客园'/><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116175522879453569/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116175522879453569' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116175522879453569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116175522879453569'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/blog-post_24.html' title='给控件做数字签名之三:进行数字签名 - 阿泰的软件实用主义 - 博客园'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116115473484520134</id><published>2006-10-17T23:58:00.001-07:00</published><updated>2006-10-17T23:58:54.973-07:00</updated><title type='text'>请教如何获得所有当前用户可以访问的，不是系统表的表名和列名？ - ITPUB论坛</title><content type='html'>&lt;a href="http://www.itpub.net/245708.html"&gt;请教如何获得所有当前用户可以访问的，不是系统表的表名和列名？ - ITPUB论坛&lt;/a&gt;: "SELECT OWNER ,TABLE_NAME,COLUMN_NAME&lt;br /&gt;FROM all_col_comments&lt;br /&gt;WHERE OWNER NOT IN('SYS','SYSTEM');"&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116115473484520134?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.itpub.net/245708.html' title='请教如何获得所有当前用户可以访问的，不是系统表的表名和列名？ - ITPUB论坛'/><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116115473484520134/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116115473484520134' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116115473484520134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116115473484520134'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/itpub.html' title='请教如何获得所有当前用户可以访问的，不是系统表的表名和列名？ - ITPUB论坛'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116115470768297775</id><published>2006-10-17T23:58:00.000-07:00</published><updated>2006-10-18T00:00:53.136-07:00</updated><title type='text'>如何有效地利用oracle的数据字典</title><content type='html'>ORACLE的数据字典是数据库的重要组成部分之一，它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。&lt;br /&gt;&lt;br /&gt;    数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。我们不能手工修改数据字典里的信息。很多时候，一般的ORACLE用户不知道如何有效地利用它。&lt;br /&gt;&lt;br /&gt;　　dictionary　　　全部数据字典表的名称和解释，它有一个同义词dict&lt;br /&gt;    dict_column　　 全部数据字典表里字段名称和解释&lt;br /&gt;  &lt;br /&gt;    如果我们想查询跟索引有关的数据字典时，可以用下面这条SQL语句:&lt;br /&gt;   &lt;br /&gt;    SQL&amp;gt;select * from dictionary where instr(comments,'index')&amp;gt;0;&lt;br /&gt;   &lt;br /&gt;    如果我们想知道user_indexes表各字段名称的详细含义，可以用下面这条SQL语句:&lt;br /&gt;   &lt;br /&gt;    SQL&amp;gt;select column_name,comments from dict_columns where table_name='USER_INDEXES';&lt;br /&gt;   &lt;br /&gt;    依此类推，就可以轻松知道数据字典的详细名称和解释，不用查看ORACLE的其它文档资料了。&lt;br /&gt;   &lt;br /&gt;    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。&lt;br /&gt;   &lt;br /&gt;    一、用户&lt;br /&gt;&lt;br /&gt;    查看当前用户的缺省表空间&lt;br /&gt;    SQL&amp;gt;select username,default_tablespace from user_users;&lt;br /&gt;&lt;br /&gt;    查看当前用户的角色&lt;br /&gt;    SQL&amp;gt;select * from user_role_privs;&lt;br /&gt;&lt;br /&gt;    查看当前用户的系统权限和表级权限&lt;br /&gt;    SQL&amp;gt;select * from user_sys_privs;&lt;br /&gt;    SQL&amp;gt;select * from user_tab_privs;&lt;br /&gt;&lt;br /&gt;    二、表&lt;br /&gt;    &lt;br /&gt;    查看用户下所有的表&lt;br /&gt;    SQL&amp;gt;select * from user_tables;&lt;br /&gt;        &lt;br /&gt;    查看名称包含log字符的表&lt;br /&gt;    SQL&amp;gt;select object_name,object_id from user_objects where instr(object_name,'LOG')&amp;gt;0;&lt;br /&gt;    &lt;br /&gt;    查看某表的创建时间&lt;br /&gt;    SQL&amp;gt;select object_name,created from user_objects where object_name=upper('&amp;amp;table_name');&lt;br /&gt;    &lt;br /&gt;    查看某表的大小&lt;br /&gt;    SQL&amp;gt;select sum(bytes)/(1024*1024) as size(M) from user_segments where segment_name=upper('&amp;amp;table_name');&lt;br /&gt;    &lt;br /&gt;    查看放在ORACLE的内存区里的表 &lt;br /&gt;    SQL&amp;gt;select table_name,cache from user_tables where instr(cache,'Y')&amp;gt;0;&lt;br /&gt;   &lt;br /&gt;    三、索引&lt;br /&gt;   &lt;br /&gt;    查看索引个数和类别&lt;br /&gt;    SQL&amp;gt;select index_name,index_type,table_name from user_indexes order by table_name;&lt;br /&gt;查看索引被索引的字段&lt;br /&gt;    SQL&amp;gt;select * from user_ind_columns where index_name=upper('&amp;amp;index_name');&lt;br /&gt;    &lt;br /&gt;    查看索引的大小&lt;br /&gt;    SQL&amp;gt;select sum(bytes)/(1024*1024) as size(M) from user_segments where segment_name=upper('&amp;amp;index_name');&lt;br /&gt;   &lt;br /&gt;    四、序列号&lt;br /&gt;   &lt;br /&gt;    查看序列号，last_number是当前值&lt;br /&gt;    SQL&amp;gt;select * from user_sequences;&lt;br /&gt;   &lt;br /&gt;    五、视图&lt;br /&gt;   &lt;br /&gt;    查看视图的名称&lt;br /&gt;    SQL&amp;gt;select view_name from user_views;&lt;br /&gt;    &lt;br /&gt;    查看创建视图的select语句&lt;br /&gt;    SQL&amp;gt;select view_name,text_length from user_views;&lt;br /&gt;    SQL&amp;gt;set long 2000;说明：可以根据视图的text_length值设定set long 的大小&lt;br /&gt;    SQL&amp;gt;select text from user_views where view_name=upper('&amp;amp;view_name');&lt;br /&gt;   &lt;br /&gt;    六、同义词&lt;br /&gt;   &lt;br /&gt;    查看同义词的名称&lt;br /&gt;    SQL&amp;gt;select * from user_synonyms;&lt;br /&gt;   &lt;br /&gt;    七、约束条件&lt;br /&gt;   &lt;br /&gt;    查看某表的约束条件&lt;br /&gt;    SQL&amp;gt;select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&amp;amp;table_name');&lt;br /&gt;        &lt;br /&gt;    SQL&amp;gt;select c.constraint_name,c.constraint_type,cc.column_name &lt;br /&gt;    from user_constraints c,user_cons_columns cc&lt;br /&gt;    where c.owner = upper('&amp;amp;table_owner') and c.table_name  = upper('&amp;table_name')&lt;br /&gt;    and c.owner = cc.owner and c.constraint_name = cc.constraint_name&lt;br /&gt;    order by cc.position;       &lt;br /&gt;   &lt;br /&gt;    八、存储函数和过程&lt;br /&gt;   &lt;br /&gt;    查看函数和过程的状态&lt;br /&gt;    SQL&amp;gt;select object_name,status from user_objects where object_type='FUNCTION';&lt;br /&gt;    SQL&amp;gt;select object_name,status from user_objects where object_type='PROCEDURE';&lt;br /&gt;    &lt;br /&gt;    查看函数和过程的源代码&lt;br /&gt;    SQL&amp;gt;select text from all_source where owner=user and name=upper('&amp;plsql_name');&lt;br /&gt;   &lt;br /&gt;    九、触发器&lt;br /&gt;   &lt;br /&gt;    查看触发器&lt;br /&gt;&lt;br /&gt;    set long 50000;&lt;br /&gt;    set heading off;&lt;br /&gt;    set pagesize 2000;&lt;br /&gt;&lt;br /&gt;    select&lt;br /&gt;    'create or replace trigger ' ||&lt;br /&gt;            trigger_name || '' || chr(10)||&lt;br /&gt;     decode( substr( trigger_type, 1, 1 ),&lt;br /&gt;             'A', 'AFTER', 'B', 'BEFORE', 'I', 'INSTEAD OF' ) ||&lt;br /&gt;                  chr(10) ||&lt;br /&gt;     triggering_event || chr(10) ||&lt;br /&gt;     'ON ' || table_owner || '.' ||&lt;br /&gt;           table_name || '' || chr(10) ||&lt;br /&gt;     decode( instr( trigger_type, 'EACH ROW' ), 0, null,&lt;br /&gt;                'FOR EACH ROW' ) || chr(10) ,&lt;br /&gt;     trigger_body&lt;br /&gt;    from user_triggers;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116115470768297775?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116115470768297775/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116115470768297775' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116115470768297775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116115470768297775'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/oracle.html' title='如何有效地利用oracle的数据字典'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116114836905554056</id><published>2006-10-17T22:12:00.000-07:00</published><updated>2006-10-17T22:15:33.353-07:00</updated><title type='text'>trixbox官方网站</title><content type='html'>&lt;a href="http://www.trixbox.org/modules/smartsection/item.php?itemid=2/"&gt;http://www.trixbox.org/modules/smartsection/item.php?itemid=2/&lt;/a&gt;&lt;br /&gt;构建中小企业语音电话平台&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116114836905554056?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116114836905554056/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116114836905554056' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116114836905554056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116114836905554056'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/trixbox.html' title='trixbox官方网站'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116114830430075228</id><published>2006-10-17T22:11:00.000-07:00</published><updated>2006-10-17T22:14:32.276-07:00</updated><title type='text'>birt使用经验</title><content type='html'>&lt;a href="http://blogger.org.cn/blog/more.asp?name=lhwork&amp;id=16583"&gt;http://blogger.org.cn/blog/more.asp?name=lhwork&amp;amp;id=16583&lt;/a&gt;&lt;br /&gt;该工具主要是使用图形化的界面来处理itext报表问题&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116114830430075228?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116114830430075228/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116114830430075228' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116114830430075228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116114830430075228'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/birt.html' title='birt使用经验'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116072083199972588</id><published>2006-10-12T23:27:00.000-07:00</published><updated>2006-10-17T22:15:05.333-07:00</updated><title type='text'>上机必读 二级上机考试部分评分方法</title><content type='html'>作者：        玲珑草草 　来源：新浪  　&lt;span style="color:#ff0000;"&gt;&lt;a href="http://www.csai.cn"&gt;http://www.csai.cn&lt;/a&gt;&lt;/span&gt;　　2005年11月22日&lt;br /&gt;自动评分系统有客观、公正的优点，但也有死板的缺点，要想得到比较好的分数，应当考虑到机器 的这一特点。实际考试还有人工复查一项,由省级考试部门负责进行.但是人工复查如何进行，我们完全不得而知。因此我们下面的所有内容均不含人工复查内容， 仅从考试系统本身来进行分析和说明。        &lt;p class="main" align="left"&gt;        　　 我们从多次使用中摸索到的考生可能感兴趣的几点介绍如下： &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 1. DOS操作题的评分比较复杂，评分系统在几次考试中标准似乎有一些变化。&lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 按系统的操作说明，只要命令正确即可得分，但实际情况并非如此。机器评分只根据结果，结果正确即得分，命令正确而结果不正确，不能得分。&lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 要注意使用规定的命令。比如考试系统不允许使用 deltree 命令，您如果习惯于用该命令来删除子目录，考试时将无法使用。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 本人曾做过试验，将结果做得完全符合要求，而不让考试系统看到我所作的事（比如使用另外的工具来做），结果照样得分；而使用正确的命令（即使与答案完全相同），而结果不正确（自然使用了"不正当"的方法），评分结果是不能得分。&lt;br /&gt;       &lt;br /&gt;      　　 2. 程序修改题的评分大约有下面一些特点： &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 有结果输出到文件中的，先检查结果文件。如果结果文件内容完全正确，给满分，并不再检查修改内容。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 结果没有输出到文件，或结果文件不正确的，逐个错误语句进行检查。分数平均分配（如果共有两个错误，每修正一个得15分；共有三个错误，则每修正一个得10分……）。&lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 检查标志为"***found***"。即机器死板地检查第X个"***found***"下面第N行（第X个错误语句应在的行）是否修改得和标准答案中的一个相同，相同则给分，否则不给分。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 例如：您的修改是完全正确的，与标准答案也完全一致。但是您插入了一个空行在"***found***"和修改了的行之间，这显然不影响程序的正确性，但自动评分系统却会认定您"修改错误"。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 更有甚者：如果您在程序的前面增加一个含有"***found***"的注释行，则不论您的程序修改得有多正确，评分系统会毫不留情地给您一个零分。&lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 程序修改题中还应注意考虑原程序作者的思路，所作改动应尽量小。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 这里有一个极端的例子：（1999年上半年二级BASIC）&lt;br /&gt;       &lt;br /&gt;        '* 给定程序MODI1.BAS其功能是: 从键盘上每次输入两个100以下&lt;br /&gt;        '* 的正数分别赋给Y和Z(如不符合此条件的, 则重新输入)，累加到累&lt;br /&gt;        '* 加器X中,直到X的值超过500为止。请找出程序中的错误，将程序调&lt;br /&gt;        '* 试出所需结果。&lt;br /&gt;        '* 注意: 不得增行或删行, 也不得更改程序的结构!&lt;br /&gt;       &lt;br /&gt;        X = 0&lt;br /&gt;        DO&lt;br /&gt;        　 DO&lt;br /&gt;        　　 t = 0&lt;br /&gt;        　　 INPUT "Y,Z="; Y, Z&lt;br /&gt;        　　 IF 0 &amp;lt; Y AND Y &amp;lt; 100 AND 0 &amp;lt; Z AND Z &amp;lt; 100 THEN&lt;br /&gt;        　　 t = 2&lt;br /&gt;        　　 ELSE&lt;br /&gt;        　　 PRINT "Out of Range! Input again"&lt;br /&gt;        　　 END IF&lt;br /&gt;        '**********found**********&lt;br /&gt;        　 LOOP WHILE t &amp;lt;&amp;gt; 1&lt;br /&gt;        　 X = X + Y + Z&lt;br /&gt;        '**********found**********&lt;br /&gt;        'WHILE X &amp;lt;&amp;gt; 500&lt;br /&gt;        PRINT "X="; X&lt;br /&gt;        END&lt;br /&gt;       &lt;br /&gt;        　　 这里共有两个错误：第一个为条件错，第二个语句和条件均有错。因此第一个错误可只改动条件为 t&amp;lt;&amp;gt;2 或 t=0，整个语句为&lt;br /&gt;        　　　 loop while t&amp;lt;&amp;gt;2 或者 loop while t=0&lt;br /&gt;        　　 第二个错误可改为&lt;br /&gt;        　　　 LOOP WHILE X &amp;lt;= 500&lt;br /&gt;        　　 总之，这里的思路就是用 DO ... LOOP WHILE &amp;lt;条件&amp;gt; 语句。&lt;br /&gt;        　　 如果使用 do ... loop until &amp;lt;条件&amp;gt;，程序可以同样成立。如第一个错误改为&lt;br /&gt;        　　 loop until t=2&lt;br /&gt;        　　 运行结果完全相同。&lt;br /&gt;        　　 但是自动评分系统会认为您"修改错误！"扣掉您应得的15分！！！&lt;br /&gt;       &lt;br /&gt;        　　 过去 C 语言的考试题目一般都出的较为严谨，很少有错误发生(但2002上半年的题虽然没发现什么严重错误，其质量实在不敢恭维)。但在2001年下半年中，仍有错判现象。举一例如下：&lt;br /&gt;        /*&lt;br /&gt;        给定程序MODI1.C中函数fun的功能是：先将在字符串s中的字符&lt;br /&gt;        按逆序存放到t串中，然后把s中的字符按正序连接到t串的后面。&lt;br /&gt;        例如：当s中的字符串为："ABCDE"时，&lt;br /&gt;        则t中的字符串应为："EDCBAABCDE"。&lt;br /&gt;        请改正程序中的错误，使它能得出正确的结果。&lt;br /&gt;        注意：不要改动main函数，不得增行或删行，也不得更改程序&lt;br /&gt;        的结构！&lt;br /&gt;        */&lt;br /&gt;        #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;        #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;        #include &amp;lt;string.h&amp;gt;&lt;br /&gt;       &lt;br /&gt;        void fun (char *s, char *t)&lt;br /&gt;        {&lt;br /&gt;        /************found************/&lt;br /&gt;        　 int i,sl;&lt;br /&gt;        // int i;&lt;br /&gt;        /* 由于C语言对书写格式不作要求，本错误如改为 int i, 其结果显然也是&lt;br /&gt;        　　 正确的。然而遗憾的是，自动批改系统此时会判错！ */&lt;br /&gt;        　 sl = strlen(s);&lt;br /&gt;        　 for (i=0; i &amp;lt; sl; i++)&lt;br /&gt;        /************found************/&lt;br /&gt;        　　 t[ i ] = s[sl-i-1];&lt;br /&gt;        // t[i] = s[sl-i];&lt;br /&gt;        　 for (i=0; i 　　t[sl+i] = s[i];&lt;br /&gt;        　 t[2*sl] = '\0';&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;        main()&lt;br /&gt;        { char s[100], t[100];&lt;br /&gt;        　 clrscr();&lt;br /&gt;        　 printf("\nPlease enter string s:"); scanf("%s", s);&lt;br /&gt;        　 fun(s, t);&lt;br /&gt;        　 printf("The result is: %s\n", t);&lt;br /&gt;        }&lt;br /&gt;        　 有的考生怕修改过程中忘记了原来的内容,把原来的内容用注释的方法保留在程序中（应该说，这是一个好的习惯）。比如把上面的内容写成&lt;br /&gt;        　　 t[ i ] = s[sl-i-1]; // t[ i ] = s[sl-i]; 或者&lt;br /&gt;      　　 t[ i ] = s[sl-i-1]; /* t[ i ] = s[sl-i]; */ &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 毫无疑问，这是正确的。但是评分系统竟然会判为"错误"，不给分。考试系统会出现这种低级错误，倒是我以前未曾想到的，而且直至目前，这种错误仍未得到修正。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 因此考生必须注意把错误的内容全部删除掉。&lt;br /&gt;        &lt;br /&gt;　　3. 编程题除去少部分类似填空或改错的BASIC程序外，均有结果输出到文件。自动评分时检查结果文件，如果结果文件内容正确，则给满分；如果没有结果文件 （即使程序是正确的，但没有运行），则得零分；如果应有若干个结果，则得分一般按结果数平均分配（比如应有两个结果，其中一个正确，另一个错误，则一般可 得40/2=20分）。在多数情况下，编程题往往不是满分就是零分。 &lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 要注意的是，在FoxBASE编程题中，如果要生成新的数据库，只要库结构正确，哪怕其他都是错误的，也可得10到20分（随题目不同而有所变化）。因此做不到编程题的考生不可轻言放弃。&lt;/p&gt;       &lt;p class="main" align="left"&gt;        　　 部分BASIC的编程题实际上是填空题，因此是一个个空来改的，分数按空数平均分配。与程序修改题不同的是，它没有使用"***found***"标记，即使有添行等，也能正确进行评分。 &lt;/p&gt;       &lt;p class="main" align="left"&gt; 　　 有的编程题对考生提出了一些限制，比如不许使用某个或某类函数，或不许使用某种方法等。在评分时，却很可能没有考虑如何限制这一点。我曾试过专门用"不 许"的方法去做题，在结果正确的情况下，照样得满分。看来考试系统也是"撑死胆大的，饿死胆小的"。当然，本人绝不鼓励考生不按要求做。如果你看了我的贴 子，去做一个"胆大的"，得不到分可不要找我负责哟！！！&lt;br /&gt;         &lt;br /&gt;        　　首先，我讲一下考试评分系统的工作原理：&lt;br /&gt;       &lt;br /&gt;        　　考试评分系统是不看源程序。而是对你的源程序编译时所产生的.obj文件和.exe文件进行测试。测试分为两部份组成:&lt;br /&gt;       &lt;br /&gt;        一、运行：完成输入、输出。&lt;br /&gt;        二、评分：与预期的结果对比。&lt;br /&gt;       &lt;br /&gt;        运行：&lt;br /&gt;       &lt;br /&gt;        　　1、运行.exe文件（由你的源程序生成的），运行时，它会调用一个读函数，把in.dat文件里的测试数据读入主函数；一般二级有20组数据，三级、四是一大组数据（一篇英文、400个四位数、100个记录等）&lt;br /&gt;       &lt;br /&gt;        　　2、调用你所编写的函数，把这些数代入。&lt;br /&gt;       &lt;br /&gt;        　　3、调用写函数，把运行结果写入out.dat文件里。一般二级有20行结果（就是每组数据的运行结果），三级、四级有一大组结果（如一组字符流）或二到三个结果（如求平均值、公差、符合条件的数的个数等）&lt;br /&gt;       &lt;br /&gt;        　　以上这三个过程二级里是调用NONO函数完成，三级、四级是分别调用ReadDat()和WriteDat()函数来完成。&lt;br /&gt;       &lt;br /&gt;        评分：&lt;br /&gt;       &lt;br /&gt;        　　运行test.exe文件，把out.dat文件里的内容与评分系统内的内容（预期结果）比较，在二级里，每对一行（就是这组数据的测试结果），给5分。&lt;br /&gt;       &lt;br /&gt;　　三级、四级的就要看具体情况给分了，如：字符流处理的，那只要错一个小部分就0分，因为字符流是连续的。如果是数值处理的（有2-3个结果），那就是 每对一个结果结20-30分，但错了一个答案就很难及格了，因为数值处理很多数是互相关联的，如：求平均值，如果符合条件的数的个数错了，那平均值也一定 是错的。还有那个100个记录的，那它是以那一行上的内容是不是与预期的一样，每对一行给1分。（因为这个测试数据刚好一百行），这就是三级或四级里有： 0&amp;lt;成绩&amp;lt;100 分的原故。（很多人都说三级四级上机成绩不是0分就是一百分，这个观点是错的）&lt;br /&gt;       &lt;br /&gt;        　　以上文件名、函数名应以源程序调用时的名为准。&lt;br /&gt;       &lt;br /&gt;　　由上述可知：一个题如果通过编译、能运行就一定有分，那是错的，因为一个题，如果你一点都不做（放空），那是一定能通过编译和运行的。但这时，out.dat文件为空，如果你编写了程序，而运行的结果都是错的，那和空是一样的。这样是不能得分的。&lt;br /&gt;       &lt;br /&gt;        　　还有是有人说我做了题，通过了编译，也出了"正确"结果，那为什么会不及格呢？是不是考试系统有问题，这个可能很小，一般是因为你的程序有问题，如以前考网上有一个题：&lt;br /&gt;       &lt;br /&gt;        求一子字符串在主字符串出现的次数；&lt;br /&gt;        例如：子串：go&lt;br /&gt;        主串：good yjgocel liugo ygoygong&lt;br /&gt;        结果为： 5&lt;br /&gt;       &lt;br /&gt;        以下是两个人的回复：&lt;br /&gt;       &lt;br /&gt;        一、int fun(char *str,char *s)&lt;br /&gt;        {&lt;br /&gt;        int m=0;&lt;br /&gt;        char *p=s;&lt;br /&gt;        while(*str!='\0')&lt;br /&gt;        { if(*str==*p)&lt;br /&gt;        { str++;&lt;br /&gt;        p++;&lt;br /&gt;        } /*两字符相同就同时移动指针。*/&lt;br /&gt;        else&lt;br /&gt;        {p=s;&lt;br /&gt;        str++ ; /*不同只移动一个指针，并把另一指针指向初始位置 */&lt;br /&gt;        }&lt;br /&gt;        if(*p=='\0') /*如果是连续的同时移动到了后一个字符串尾，就计一次数 */&lt;br /&gt;        { m++;&lt;br /&gt;        p=s ;&lt;br /&gt;        }&lt;br /&gt;        }&lt;br /&gt;        return m;&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;        二、int fun(char *str,char *s)&lt;br /&gt;        {&lt;br /&gt;        int i,j,m=0;&lt;br /&gt;        for(i=0;i&amp;lt;strlen(str);) {&lt;br /&gt;        for(j=0;j&amp;lt;strlen(s);)&lt;br /&gt;        if(str[i]==s[j]) {&lt;br /&gt;        i++;&lt;br /&gt;        j++;&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;        i++;&lt;br /&gt;        break;&lt;br /&gt;        }&lt;br /&gt;        if(j==strlen(s))&lt;br /&gt;        m++;&lt;br /&gt;        }&lt;br /&gt;        return m;&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;　　其实这两个答案，对于上面的那个主串和子串也许是可以的，但，如果主串是aaa aa,子串是aa,那上面这两个程序就不行了，因为，aa在aaa aa里出现了3次，而不是2次，字符串是可以嵌套出现的，而测试数据里的数据一般什么情况都有，而象这种嵌套的多，这就是他认为自已程序是对的，而结果是 不及格的原故。&lt;br /&gt;       &lt;br /&gt;        　　以上两位如果是考生的话，他们肯定会说他们的程序是绝对对的，是评分系统问题。&lt;br /&gt;       &lt;br /&gt;        正确的应这样写：&lt;br /&gt;       &lt;br /&gt;        fun(char *str,char *s)&lt;br /&gt;        {char str1[10]="";&lt;br /&gt;        int i,k=0;&lt;br /&gt;        for(;*str;str++)&lt;br /&gt;        {for(i=0;i&amp;lt;strlen(s);i++)&lt;br /&gt;        str1[i]=*(str+i);&lt;br /&gt;        if(!strcmp(str1,s)) k++;&lt;br /&gt;        }&lt;br /&gt;        return k;&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;      　　下面我再讲一个测试上述程序的实例：&lt;/p&gt;             　　主串为：ababcabcacbab。子串为abc或ab。有兴趣的考生可以上机试一下看对不对&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116072083199972588?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116072083199972588/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116072083199972588' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116072083199972588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116072083199972588'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/blog-post_12.html' title='上机必读 二级上机考试部分评分方法'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-116045335341555008</id><published>2006-10-09T21:09:00.000-07:00</published><updated>2006-10-09T21:18:14.750-07:00</updated><title type='text'>共享软件防破解的实用招法</title><content type='html'>&lt;table style="table-layout: fixed;" align="center" cellpadding="4" cellspacing="0" height="100%" width="99%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="6" bg valign="top" style="color:#ffffff;"&gt;&lt;span class="tpc_content"&gt;  1、检测主程序大小，防止破解补丁之类：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Function TForm1.GesSelfSf: integer;&lt;br /&gt;var&lt;br /&gt;F: file of byte;&lt;br /&gt;begin&lt;br /&gt;Filemode:=0;&lt;br /&gt;Assignfile(F,'.\FileName.exe');&lt;br /&gt;Reset(f);&lt;br /&gt;Result:=Filesize(F);&lt;br /&gt;Closefile(F);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2、检测创建日期和时间，让破解补丁实效：&lt;br /&gt;&lt;br /&gt;Function TForm1.FinDate:String;&lt;br /&gt;var&lt;br /&gt;t:TDate;&lt;br /&gt;begin&lt;br /&gt;ShortDateFormat:='yyyy-mm-dd';&lt;br /&gt;t:=FileDateToDateTime(FileAge('FileName.exe'));&lt;br /&gt;Result:=DateToStr(t);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;3、注册码加密函数嵌入数学函数，增加破解难度：&lt;br /&gt;（略）&lt;br /&gt;&lt;br /&gt;4、必要时自己删除自己（主程序）：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Funll;&lt;br /&gt;var&lt;br /&gt;hModule:THandle;&lt;br /&gt;buff:array[0..255]of Char;&lt;br /&gt;hKernel32:THandle;&lt;br /&gt;pExitProcess,pDeleteFileA,pUnmapViewOfFileointer;&lt;br /&gt;begin&lt;br /&gt;hModule:=GetModuleHandle(nil);&lt;br /&gt;GetModuleFileName(hModule, buff, sizeof(buff));&lt;br /&gt;CloseHandle(THandle(4));&lt;br /&gt;hKernel32:=GetModuleHandle('KERNEL32');&lt;br /&gt;pExitProcess:=GetProcAddress(hKernel32, 'ExitProcess');&lt;br /&gt;pDeleteFileA:=GetProcAddress(hKernel32, 'DeleteFileA');&lt;br /&gt;pUnmapViewOfFile:=GetProcAddress(hKernel32, 'UnmapViewOfFile');&lt;br /&gt;asm&lt;br /&gt;LEA EAX, buff&lt;br /&gt;PUSH 0&lt;br /&gt;PUSH 0&lt;br /&gt;PUSH EAX&lt;br /&gt;PUSH pExitProcess&lt;br /&gt;PUSH hModule&lt;br /&gt;PUSH pDeleteFileA&lt;br /&gt;PUSH pUnmapViewOfFile&lt;br /&gt;RET&lt;br /&gt;end;&lt;br /&gt;begin&lt;br /&gt;Funll;&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　 　具体怎么使用，那要看你自己的意愿了和需要了。反正我是这样做的，我的软件ADSL拨号计时器只在很早版本上出过注册机，后来的v3.70出过破解补丁 ——其实只是破掉了启动时提示注册的对话框，实质上根本没破解。用了上述的着法以后，到现在的v5.28版本，再没有过什么破解补丁或注册机。&lt;br /&gt;&lt;br /&gt;　　如果现在的v5.28版本谁能破解，将立即公布程序源码。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;附：注册机破解法的原理以及应对方法&lt;br /&gt;&lt;br /&gt;认识注册机破解法&lt;br /&gt;　　顾名思义，写注册机来破解软件注册的方法，就是模仿你的注册码生成算法或者逆向注 册码验证算法而写出来的和你一模一样的注册机。如果被写出注册机，你的软件只好免费了。或者你必须更换算法，但以前注过册的合法用户都得被迫更换注册码了。 &lt;br /&gt;&lt;br /&gt;　 　Cracker要写注册机必须详细研究你软件的验证模块，这必须先将你的软件脱壳，再反汇编或者用调试器跟踪。市面上许多加壳和保护软件都吹嘘不可能被 脱壳，但到目前为止没有一个软件兑现了自己的诺言。由于CPU最终执行的都是有效指令，所以等你的程序自解压完成后再从内存中Dump出来就可以实现脱 壳。因此不要在壳上面花很多功夫，因为没有这个必要。&lt;br /&gt;&lt;br /&gt;第一招：制造假相&lt;br /&gt;&lt;br /&gt;　　反汇编和调试器跟踪都是不可能防止的，因为所有的Win32程序都必须通过API来调用Windows系统中的关键DLL的（如Kernel32.dll、GDI32.dll等），然而API是可以Hook的。我们只能从自己的代码着手来保护我们的劳动果实了。&lt;br /&gt;&lt;br /&gt;　 　为了自己调试和以后维护的方便，我们一般采用有意义的名字给我们的函数命名，可这给了Cracker可乘之机。例如这样的函数是什么意思大家应该一目了 然吧?IsRegistered（），IsLicensed（），LicenseVerify（），CheckReg（）……这样Cracker就可以轻 松地从数千个函数中找到他的目标——你的注册码校验函数!而且破解Delphi编写的软件还有一件TMG小组的破解利器——DeDe。它可以轻松地看到你 软件里的Form、Unit和函数名，还可以反汇编一部分代码，更可以和Win32DASM合作反汇编更多的代码，对Delphi编出的程序威胁极大。&lt;br /&gt;&lt;br /&gt;　　为了不给Cracker创造温馨舒适的破解环境，要故意混乱（Obfuscate）我们的代码，将软件中所有的函数名全部替换成随机 生成的函数名。例如Func_3dfsa_fs32zlfv这个函数是什么意思?恐怕只有天知道了。网上有现成的代码混乱器，按你使用的编程语言的种 类可以找到一些。但要注意，只有当你要发布软件时才使用它，而且一定注意备份源代码。否则，当你看不懂你自己的代码时就着急了：）&lt;br /&gt;&lt;br /&gt;第二招：用公匙，并改名&lt;br /&gt;&lt;br /&gt;　 　另外，一定要使用公开密匙算法保护你的软件。RSA、DSA和El Gamal之类的算法都可以从网上找到。但注意：将你算法单元中所有涉及到算法名称的字符串全部改名。避免被Cracker发现你用的算法而模仿写出注册 机来!你还可以张冠李戴，明明用的DSA，将名字全部替换成RSA。&lt;br /&gt;&lt;br /&gt;　　其它算法，如对称算法和Hash算法也要注意改名，否则这样：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　EncryptedCode = Blowfish（MD5（UserName），MD5（Key））；&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　//你的加密算法，使用了Blowfish（对称算法）和MD5（Hash算法）&lt;br /&gt;&lt;br /&gt;　　虽然那些Cracker不了解Blowfish和MD5算法的原理，也不会逆向推测它们，但他们了解你的校验算法的流程和算法名，便可马上从网上找到类似的Blowfish和MD5算法包，从而模拟你的软件仿造出注册机。 &lt;br /&gt;&lt;br /&gt;　　如果你用不常见的，算法如Skipjack（NASA美国航天局标准算法）、LOKI、3-WAY、Safer之类不出名但保密程度很高的算法，并且全部改名，这样就会伤透他们脑筋了。&lt;br /&gt;&lt;br /&gt;　 　当然，最好把Hash算法也全部改名，会给他们制造更多的困难。但注意，MD5和SHA之类的Hash初始值会被Cracker从内存中找到，这样他就 知道你用的Hash了。所以建议同时使用MD5的变形算法Ripe-MD（RMD）128或160或其它的Hash，如Tiger、Haval等算法。&lt;br /&gt;&lt;br /&gt;第三招：阻止别人调试&lt;br /&gt;&lt;br /&gt;　　还有一点，调试器对我们的威胁很大，我们不会让Cracker们舒舒服服地使用SoftICE、TRW或OllyDbg来调试我们的程序。除了常用的MeItICE方法外，这里我给一个笔者写的方法：&lt;br /&gt;&lt;br /&gt;　　{检查自己的进程的父进程是否为Explorer.exe，否则是被调试器加载了}&lt;br /&gt;&lt;br /&gt;　　{不过注意，控制台程序的父进程在WinNT下是Cmd.exe!}&lt;br /&gt;&lt;br /&gt;　　{注意加载TlHelp32.pas单元}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　procedure CheckParentProc；&lt;br /&gt;　　var //检查自己的进程的父进程&lt;br /&gt;　　Pn: TProcesseNtry32；&lt;br /&gt;　　sHandle:THandle；&lt;br /&gt;　　H，ExplProc，ParentProc:Hwnd；&lt;br /&gt;　　Found:Boolean；&lt;br /&gt;　　Buffer:array[0..1023]of Char； &lt;br /&gt;　　　Path:string；&lt;br /&gt;　　begin&lt;br /&gt;　　H:= 0；&lt;br /&gt;　　ExplProc:= 0；&lt;br /&gt;　　ParentProc:= 0；&lt;br /&gt;　　//得到Windows的目录&lt;br /&gt;　　SetString（Path，Buffer）&lt;br /&gt;　　GetWindowsDirectory（Buffer，Sizeof（Buffer）- 1））；&lt;br /&gt;　　Path:= UpperCase（Path）+ '\EX  PLORER.EXE'；//得到Explorer的路径&lt;br /&gt;　　//得到所有进程的列表快照&lt;br /&gt;　　sHandle:= CreateToolHelp32Snap Shot（TH32CS_SNAPALL，0）；&lt;br /&gt;　　Found:= Process32First（sHandle，Pn）；//查找进程&lt;br /&gt;　　while Found do //遍历所有进程&lt;br /&gt;　　begin&lt;br /&gt;　　if Pn.szExeFile = ParamStr（0）then //自己的进程 &lt;br /&gt;　　begin&lt;br /&gt;　　ParentProc:= Pn.th32ParentProcessID://得到父进程的进程ID&lt;br /&gt;　　//父进程的句柄&lt;br /&gt;　　H:= OpenProcess（PRO CESS_ALL_ACCESS，True，Pn.th32Parent ProcessID）；&lt;br /&gt;　　end&lt;br /&gt;　　else if UpperCase（Pn.szExeFile）= Path then&lt;br /&gt;　　ExplProc:=  Pn.th32ProcessID；//Ex plorer的PID&lt;br /&gt;　　Found:= Process32Next（sHandle，Pn）；//查找下一个&lt;br /&gt;　　end；&lt;br /&gt;　　//父进程不是Explorer，是调试器……&lt;br /&gt;　　if ParentProc &amp;lt;&amp;gt; ExplProc then&lt;br /&gt;　　begin&lt;br /&gt;　　TerminateProcess（H，0）；//杀之!除之而后快也! :）&lt;br /&gt;　　//你还可以加上其它什么死机代码来消遣消遣这位可爱的Cracker:）&lt;br /&gt;　　　end�&lt;br /&gt;　　end&lt;br /&gt;&lt;br /&gt;�&lt;br /&gt;　　你可以在Delphi或者VC中试试，这样可以把Delphi和VC杀掉了，因为你现在用的是Delphi和VC的内置调试器来运行你的程序。调试的时候你还是把它的注释删掉吧，发布时别忘记激活哟!&lt;br /&gt;&lt;br /&gt;第四招：保护字符串&lt;br /&gt;&lt;br /&gt;　 　最后一个问题，这也是一个非常重要的问题：保护你的字符串!字符串在注册模块中非常重要!当一个富有经验的Cracker破解你的软件时，首先做的就是 窃取你的字符串。比如他会输入错误的注册码，得到你关于错误注册码的提示，通常是"无效的注册码，请重新输入!"或者"Invalid key（please input again）"等等，然后用OllyDbg进行断点调试或者用WinDASM、IDA Pro等静态分析工具在被他脱壳后的程序中查找那个字符串，找到后进行分析。因此，请一定加密你的字符串! 使用时再临时解密出来，而且要尽量少使用消息提示框，避免被Cracker找到漏洞。加密字符串不需要太复杂的算法，随便找一个快速的对称算法就可以了。&lt;br /&gt;&lt;br /&gt;　　最后提醒大家一句，不要在加密上花太多的功夫!你应该把更多的时间和精力都用来完善你的软件，这样会更合算。借用一位前辈的话来忠告 大家吧：花点时间考虑你自己的软件，看看它是否值得保护?如果没人用你的软件，保护也就没有意义了，不要过高估计你的软件"对世界的重要性&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;&lt;/tr&gt;  &lt;tr bgcolor="#ffffff" valign="bottom"&gt;&lt;td colspan="6" align="right"&gt; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-116045335341555008?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/116045335341555008/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=116045335341555008' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116045335341555008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/116045335341555008'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/10/blog-post.html' title='共享软件防破解的实用招法'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115794398533781688</id><published>2006-09-10T20:06:00.000-07:00</published><updated>2006-09-10T20:09:10.566-07:00</updated><title type='text'>oracle 942错误</title><content type='html'>&lt;span id="ctl02_ctl00_lblPermalink"&gt;&lt;div id="msgcns!22042D05BB497C1A!255"&gt;&lt;div&gt;Imp正常，但Exp却无法完成&lt;br /&gt;==============================&lt;br /&gt;前日晚上准备对刚刚启用的Unix环境Oracle数据库做一次Exp逻辑备份，报如下错误：&lt;/div&gt; &lt;div&gt;EXP-00056: ORACLE error 942 encountered&lt;br /&gt;ORA-00942: table or view does not exist&lt;br /&gt;EXP-00000: Export terminated unsuccessfully&lt;/div&gt; &lt;div&gt;感觉很奇怪，因为数据库中的数据就是通过Imp转移来的，怎么这里的Exp不能用了呢？上网搜了一下，发现这个问题还并不鲜见，找到一篇文章解 释为Oracle本身的一个bug，发生在从920升级到9206以后，因此建议在升级后用Exp命令来检验升级是否真正成功，但事已至此，我又检查了测 试环境和开发环境，发现都有这样的我问题，于是根据作者提供的方法，执行了/rdbms/admin/catpatch.sql脚本，然后手动编译了 sys schema下的所有package，再使用Exp命令导出数据就可以了，具体命令如下：&lt;/div&gt; &lt;div&gt;SQL&amp;gt;shutdown immediate;&lt;br /&gt;SQL&amp;gt;startup migrate;&lt;br /&gt;SQL&amp;gt;@?/rdbms/admin/catpatch.sql&lt;/div&gt; &lt;div&gt;SQL&amp;gt;shutdown immediate;&lt;/div&gt; &lt;div&gt;SQL&amp;gt;startup;&lt;br /&gt;&lt;br /&gt;========================&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family:Times New Roman;"&gt;XP-00056: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;遇到&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;span style="font-family:Times New Roman;"&gt; ORACLE &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;错误&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family:Times New Roman;"&gt; 942&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family:Times New Roman;"&gt;ORA-00942: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;表或视图不存在&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family:Times New Roman;"&gt;EXP-00000: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;导出终止失败&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:宋体;"&gt;解决办法：报此错误并不是因为你的权限不够，也不是因为你的命令有误，而是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family:Times New Roman;"&gt;ORACLE&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;本身的问题，是由于你的客户端版本低于服务器端的版本造成的。最好的办法就是装一个与服务器端版本相同客户端。要不就到服务器端去导吧。 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115794398533781688?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115794398533781688/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115794398533781688' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115794398533781688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115794398533781688'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oracle-942.html' title='oracle 942错误'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770427781427587</id><published>2006-09-08T01:30:00.000-07:00</published><updated>2006-09-08T01:34:03.563-07:00</updated><title type='text'>在Oracle中存取BLOB对象实现文件的上传和下载</title><content type='html'>最近做一个J2EE项目，需要在JSP页面实现对文件的上传和下载。很早以前就知道JDBC支持大对象（LOB）的存取，以为很容易，做起来才发现问题多多，读了一大堆文章，反而没有什么头绪了。正如一位网友文章所讲：“…网络上的教程99%都是行不通的，连SUN自己的文档都一直错误……”，实际情况大致如此了。&lt;br /&gt;&lt;br /&gt;   存取BLOB出现这么多问题，我认为大半是由数据库开发商、应用服务器商在JDBC驱动上的不兼容性带来的。而实际应用中，每个人的开发运行环境不同，使得某个网友的solution没有办法在别人的应用中重现，以至于骂声一片。至于为什么会不兼容、有哪些问题，我没有时间去弄清，这里只说说我们怎样解决了问题的。&lt;br /&gt;&lt;br /&gt;   基于上述原因，先列出我们的开发环境，免得有人配不出来，招人唾骂。&lt;br /&gt;&lt;br /&gt;   数据库 Oracle 9i&lt;br /&gt;&lt;br /&gt;   应用服务器 BEA Weblogic 8.11&lt;br /&gt;&lt;br /&gt;   开发工具 JBuilder X&lt;br /&gt;&lt;br /&gt;   在JSP实现文件Upload/Download可以分成这样几块 ：文件提交到形成InputSteam；InputSteam以BLOB格式入库；数据从库中读出为InputSteam；InputStream输出到页面形成下载文件。先说BLOB吧。&lt;br /&gt;&lt;br /&gt;   1．  BLOB入库&lt;br /&gt;&lt;br /&gt;   （1）       直接获得数据库连接的情况&lt;br /&gt;&lt;br /&gt;   这是Oracle提供的标准方式，先插入一个空BLOB对象，然后Update这个空对象。代码如下：&lt;br /&gt;&lt;br /&gt;   //得到数据库连接（驱动包是weblogic的，没有下载任何新版本）&lt;br /&gt;&lt;br /&gt;   Class.forName("oracle.jdbc.driver.OracleDriver");&lt;br /&gt;&lt;br /&gt;   Connection con = DriverManager.getConnection(&lt;br /&gt;&lt;br /&gt;             "jdbc:oracle:thin:@localhost:1521:testdb", "test", "test");&lt;br /&gt;&lt;br /&gt;   //处理事务&lt;br /&gt;&lt;br /&gt;   con.setAutoCommit(false);&lt;br /&gt;&lt;br /&gt;   Statement st = con.createStatement();&lt;br /&gt;&lt;br /&gt;   //插入一个空对象&lt;br /&gt;&lt;br /&gt;   st.executeUpdate("insert into BLOBIMG  values(103,empty_blob())");&lt;br /&gt;&lt;br /&gt;   //用for update方式锁定数据行&lt;br /&gt;&lt;br /&gt;   ResultSet rs = st.executeQuery(&lt;br /&gt;&lt;br /&gt;             "select contents from  BLOBIMG  where  id=103 for update");&lt;br /&gt;&lt;br /&gt;   if (rs.next()) {&lt;br /&gt;&lt;br /&gt;      //得到java.sql.Blob对象，然后Cast为oracle.sql.BLOB&lt;br /&gt;&lt;br /&gt;   oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1).;&lt;br /&gt;&lt;br /&gt;      //到数据库的输出流&lt;br /&gt;&lt;br /&gt;   OutputStream outStream = blob.getBinaryOutputStream();&lt;br /&gt;&lt;br /&gt;      //这里用一个文件模拟输入流&lt;br /&gt;&lt;br /&gt;   File file = new File("d:\\proxy.txt");&lt;br /&gt;&lt;br /&gt;     InputStream fin = new FileInputStream(file);&lt;br /&gt;&lt;br /&gt;   //将输入流写到输出流&lt;br /&gt;&lt;br /&gt;   byte[] b = new byte[blob.getBufferSize()];&lt;br /&gt;&lt;br /&gt;           int len = 0;&lt;br /&gt;&lt;br /&gt;           while ( (len = fin.read(b)) != -1) {&lt;br /&gt;&lt;br /&gt;             outStream.write(b, 0, len);&lt;br /&gt;&lt;br /&gt;             //blob.putBytes(1,b);&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;      //依次关闭（注意顺序）&lt;br /&gt;&lt;br /&gt;   fin.close();&lt;br /&gt;&lt;br /&gt;      outStream.flush();&lt;br /&gt;&lt;br /&gt;      outStream.close();&lt;br /&gt;&lt;br /&gt;      con.commit();&lt;br /&gt;&lt;br /&gt;      con.close();&lt;br /&gt;&lt;br /&gt;   （2）       通过JNDI获得数据库连接&lt;br /&gt;&lt;br /&gt;   在Weblogic中配置到Oracle的JDBC Connection Pool和DataSource，绑定到Context中，假定绑定名为”orads”。&lt;br /&gt;&lt;br /&gt;   为了得到数据库连接，做一个连接工厂，主要代码如下：&lt;br /&gt;&lt;br /&gt;   Context context = new InitialContext();&lt;br /&gt;&lt;br /&gt;   ds = (DataSource) context.lookup("orads");&lt;br /&gt;&lt;br /&gt;   return ds.getConnection();&lt;br /&gt;&lt;br /&gt;   以下是BLOB写入数据库的代码：&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;         Connection con = ConnectionFactory.getConnection();&lt;br /&gt;&lt;br /&gt;   con.setAutoCommit(false);&lt;br /&gt;&lt;br /&gt;   Statement st = con.createStatement();&lt;br /&gt;&lt;br /&gt;   st.executeUpdate("insert into BLOBIMG values(103,empty_blob())");&lt;br /&gt;&lt;br /&gt;   ResultSet rs = st.executeQuery(&lt;br /&gt;&lt;br /&gt;             "select contents from  BLOBIMG  where  id=103 for update");&lt;br /&gt;&lt;br /&gt;   if (rs.next()) {&lt;br /&gt;&lt;br /&gt;       //上面代码不变&lt;br /&gt;&lt;br /&gt;   //这里不能用oracle.sql.BLOB，会报ClassCast 异常&lt;br /&gt;&lt;br /&gt;   weblogic.jdbc.vendor.oracle.OracleThinBlobblob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs.getBlob(1);&lt;br /&gt;&lt;br /&gt;       //以后代码也不变&lt;br /&gt;&lt;br /&gt;   OutputStream outStream = blob.getBinaryOutputStream();&lt;br /&gt;&lt;br /&gt;   File file = new File("d:\\proxy.txt");&lt;br /&gt;&lt;br /&gt;     InputStream fin = new FileInputStream(file);&lt;br /&gt;&lt;br /&gt;   byte[] b = new byte[blob.getBufferSize()];&lt;br /&gt;&lt;br /&gt;           int len = 0;&lt;br /&gt;&lt;br /&gt;           while ( (len = fin.read(b)) != -1) {&lt;br /&gt;&lt;br /&gt;             outStream.write(b, 0, len);&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;             fin.close();&lt;br /&gt;&lt;br /&gt;      outStream.flush();&lt;br /&gt;&lt;br /&gt;      outStream.close();&lt;br /&gt;&lt;br /&gt;      con.commit();&lt;br /&gt;&lt;br /&gt;      con.close();&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   2．  BLOB出库&lt;br /&gt;&lt;br /&gt;   从数据库中读出BLOB数据没有上述由于连接池的不同带来的差异，只需要J2SE的标准类java.sql.Blob就可以取得输出流（注意区别java.sql.Blob和oracle.sql.BLOB）。代码如下：&lt;br /&gt;&lt;br /&gt;   Connection con = ConnectionFactory.getConnection();&lt;br /&gt;&lt;br /&gt;   con.setAutoCommit(false);&lt;br /&gt;&lt;br /&gt;   Statement st = con.createStatement();&lt;br /&gt;&lt;br /&gt;   //这里的SQL语句不再需要”for update”&lt;br /&gt;&lt;br /&gt;   ResultSet rs = st.executeQuery(&lt;br /&gt;&lt;br /&gt;             "select contents from  BLOBIMG  where  id=103 ");&lt;br /&gt;&lt;br /&gt;   if (rs.next()) {&lt;br /&gt;&lt;br /&gt;      java.sql.Blob blob = rs.getBlob(1);&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;      InputStream ins = blob.getBinaryStream();&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;             //用文件模拟输出流&lt;br /&gt;&lt;br /&gt;   File file = new File("d:\\output.txt");&lt;br /&gt;&lt;br /&gt;      OutputStream fout = new FileOutputStream(file);&lt;br /&gt;&lt;br /&gt;           //下面将BLOB数据写入文件&lt;br /&gt;&lt;br /&gt;       byte[] b = new byte[1024];&lt;br /&gt;&lt;br /&gt;       int len = 0;&lt;br /&gt;&lt;br /&gt;           while ( (len = ins.read(b)) != -1) {&lt;br /&gt;&lt;br /&gt;             fout.write(b, 0, len);&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;     //依次关闭&lt;br /&gt;&lt;br /&gt;     fout.close();&lt;br /&gt;&lt;br /&gt;     ins.close();&lt;br /&gt;&lt;br /&gt;     con.commit();&lt;br /&gt;&lt;br /&gt;     con.close();&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   3．  从JSP页面提交文件到数据库&lt;br /&gt;&lt;br /&gt;      （1）       提交页面的代码如下：&lt;br /&gt;&lt;br /&gt;   &amp;lt;form action="handle.jsp" enctype="multipart/form-data" method="post" &amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;input type="hidden" name="id" value="103"/&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;input type="file"  name="fileToUpload"&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;input type="submit"  value="Upload"&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;       （2）       由于JSP没有提供文件上传的处理能力，只有使用第三方的开发包。网络上开源的包有很多，我们这里选择Apache Jakarta的FileUpload，在http://jakarta.apache.org/commons/fileupload/index.html 可以得到下载包和完整的API文档。法奥为adajspException&lt;br /&gt;&lt;br /&gt;   处理页面（handle.jsp）的代码如下&lt;br /&gt;&lt;br /&gt;   &amp;lt;%&lt;br /&gt;&lt;br /&gt;   boolean isMultipart = FileUpload.isMultipartContent(request);&lt;br /&gt;&lt;br /&gt;       if (isMultipart) {&lt;br /&gt;&lt;br /&gt;         // 建立一个新的Upload对象&lt;br /&gt;&lt;br /&gt;         DiskFileUpload upload = new DiskFileUpload();&lt;br /&gt;&lt;br /&gt;             // 设置上载文件的参数&lt;br /&gt;&lt;br /&gt;       //upload.setSizeThreshold(yourMaxMemorySize);&lt;br /&gt;&lt;br /&gt;       //upload.setSizeMax(yourMaxRequestSize);&lt;br /&gt;&lt;br /&gt;       String rootPath = getServletConfig().getServletContext().getRealPath("/") ;&lt;br /&gt;&lt;br /&gt;       upload.setRepositoryPath(rootPath+\\uploads);&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;           // 分析request中的传来的文件流，返回Item的集合，&lt;br /&gt;&lt;br /&gt;        // 轮询Items，如果不是表单域，就是一个文件对象。&lt;br /&gt;&lt;br /&gt;         List items = upload.parseRequest(request);&lt;br /&gt;&lt;br /&gt;         Iterator iter = items.iterator();&lt;br /&gt;&lt;br /&gt;         while (iter.hasNext()) {&lt;br /&gt;&lt;br /&gt;           FileItem item = (FileItem) iter.next();&lt;br /&gt;&lt;br /&gt;           //如果是文件对象&lt;br /&gt;&lt;br /&gt;   if (!item.isFormField()) {&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;             //如果是文本文件，可以直接显示&lt;br /&gt;&lt;br /&gt;             //out.println(item.getString());&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;             //将上载的文件写到服务器的\WEB-INF\webstart\下，文件名为test.txt&lt;br /&gt;&lt;br /&gt;             //File uploadedFile = new File(rootPath+"\\uploads\\test.txt");&lt;br /&gt;&lt;br /&gt;             //item.write(uploadedFile);&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;           //下面的代码是将文件入库（略）：&lt;br /&gt;&lt;br /&gt;           //注意输入流的获取&lt;br /&gt;&lt;br /&gt;   …&lt;br /&gt;&lt;br /&gt;   InputStream uploadedStream = item.getInputStream();&lt;br /&gt;&lt;br /&gt;   …&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           //否则是普通表单&lt;br /&gt;&lt;br /&gt;   else{&lt;br /&gt;&lt;br /&gt;             out.println("FieldName: " + item.getFieldName()+"&amp;lt;br&amp;gt;");&lt;br /&gt;&lt;br /&gt;             out.println("Value: "+item.getString()+"&amp;lt;br&amp;gt;");        }&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   %&amp;gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   4．  从数据库读取BLOB然后保存到客户端磁盘上&lt;br /&gt;&lt;br /&gt;   这段代码有点诡异，执行后将会弹出文件保存对话窗口，将BLOB数据读出保存到本地文件。全文列出如下：&lt;br /&gt;&lt;br /&gt;   &amp;lt;%@ page contentType="text/html; charset=GBK" import="java.io.*" import="java.sql.*" import="test.global.ConnectionFactory"%&amp;gt;&amp;lt;%&lt;br /&gt;&lt;br /&gt;         Connection con = ConnectionFactory.getConnection();&lt;br /&gt;&lt;br /&gt;         con.setAutoCommit(false);&lt;br /&gt;&lt;br /&gt;         Statement st = con.createStatement();&lt;br /&gt;&lt;br /&gt;              ResultSet rs = st.executeQuery(&lt;br /&gt;&lt;br /&gt;                        "select contents from  BLOBIMG  where  id=103 ");&lt;br /&gt;&lt;br /&gt;         if (rs.next()) {&lt;br /&gt;&lt;br /&gt;           Blob blob = rs.getBlob(1);&lt;br /&gt;&lt;br /&gt;           InputStream ins = blob.getBinaryStream();&lt;br /&gt;&lt;br /&gt;               response.setContentType("application/unknown");&lt;br /&gt;&lt;br /&gt;           response.addHeader("Content-Disposition", "attachment; filename="+"output.txt");&lt;br /&gt;&lt;br /&gt;                OutputStream outStream = response.getOutputStream();&lt;br /&gt;&lt;br /&gt;           byte[] bytes = new byte[1024];&lt;br /&gt;&lt;br /&gt;           int len = 0;&lt;br /&gt;&lt;br /&gt;           while ((len=ins.read(bytes))!=-1) {&lt;br /&gt;&lt;br /&gt;               outStream.write(bytes,0,len);&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           ins.close();&lt;br /&gt;&lt;br /&gt;           outStream.close();&lt;br /&gt;&lt;br /&gt;           outStream = null;&lt;br /&gt;&lt;br /&gt;           con.commit();&lt;br /&gt;&lt;br /&gt;           con.close();&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;   %&amp;gt;&lt;br /&gt;&lt;br /&gt;   注意，在&amp;lt;% … … %&amp;gt;之外，绝对不能有任何字符，空格或回车都不行，不然会导致outputStream出错，对非ASCII输出文件来说就是格式错误不可读。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770427781427587?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770427781427587/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770427781427587' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770427781427587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770427781427587'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oracleblob_08.html' title='在Oracle中存取BLOB对象实现文件的上传和下载'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770396017291057</id><published>2006-09-08T01:25:00.000-07:00</published><updated>2006-09-08T01:26:49.110-07:00</updated><title type='text'>在Oracle中存取BLOB对象实现文件的上传和下载_站长技术站  -</title><content type='html'>&lt;div id="gnid50549_5" class="NoteContents"   style=";font-family:arial,sans-serif;font-size:83%;"&gt;&lt;blockquote style="margin-top: 0.25ex;" class="gn_bq"&gt;&lt;p style="margin-top: 0pt;"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;最近做一个&lt;/span&gt;&lt;font&gt;J2EE&lt;/span&gt;&lt;font&gt;项目，需要在&lt;/span&gt;&lt;font&gt;JSP&lt;/span&gt;&lt;font&gt;页面实现对文件的上传和下载。很早以前就知道&lt;/span&gt;&lt;font&gt;JDBC&lt;/span&gt;&lt;font&gt;支持大对象（&lt;/span&gt;&lt;font&gt;LOB&lt;/span&gt;&lt;font&gt;）的存取，以为很容易，做起来才发现问题多多，读了一大堆文章，反而没有什么头绪了。正如一位网友文章所讲：“…网络上的教程&lt;/span&gt;&lt;font&gt;99%&lt;/span&gt;&lt;font&gt;都是行不通的，连&lt;/span&gt;&lt;font&gt;SUN&lt;/span&gt;&lt;font&gt;自己的文档都一直错误……”，实际情况大致如此了。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;存取&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;出现这么多问题，我认为大半是由数据库开发商、应用服务器商在&lt;/span&gt;&lt;font&gt;JDBC&lt;/span&gt;&lt;font&gt;驱动上的不兼容性带来的。而实际应用中，每个人的开发运行环境不同，使得某个网友的&lt;/span&gt;&lt;font&gt;solution&lt;/span&gt;&lt;font&gt;没有办法在别人的应用中重现，以至于骂声一片。至于为什么会不兼容、有哪些问题，我没有时间去弄清，这里只说说我们怎样解决了问题的。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;基于上述原因，先列出我们的开发环境，免得有人配不出来，招人唾骂。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;数据库&lt;/span&gt;&lt;font&gt; Oracle 9i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;应用服务器&lt;/span&gt;&lt;font&gt; BEA Weblogic 8.11&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;开发工具&lt;/span&gt;&lt;font&gt; JBuilder X&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;在&lt;/span&gt;&lt;font&gt;JSP&lt;/span&gt;&lt;font&gt;实现文件&lt;/span&gt;&lt;font&gt;Upload/Download&lt;/span&gt;&lt;font&gt;可以分成这样几块&lt;/span&gt; &lt;font&gt;：文件提交到形成&lt;/span&gt;&lt;font&gt;InputSteam&lt;/span&gt;&lt;font&gt;；&lt;/span&gt;&lt;font&gt;InputSteam&lt;/span&gt;&lt;font&gt;以&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;格式入库；数据从库中读出为&lt;/span&gt;&lt;font&gt;InputSteam&lt;/span&gt;&lt;font&gt;；&lt;/span&gt;&lt;font&gt;InputStream&lt;/span&gt;&lt;font&gt;输出到页面形成下载文件。先说&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;吧。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;1．&lt;font&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;入库&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;（1）&lt;font&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;直接获得数据库连接的情况&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;这是&lt;/span&gt;&lt;font&gt;Oracle&lt;/span&gt;&lt;font&gt;提供的标准方式，先插入一个空&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;对象，然后&lt;/span&gt;&lt;font&gt;Update&lt;/span&gt;&lt;font&gt;这个空对象。代码如下：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;得到数据库连接（驱动包是&lt;/span&gt;&lt;font&gt;weblogic&lt;/span&gt;&lt;font&gt;的，没有下载任何新版本）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Class.forName("oracle.jdbc.driver.OracleDriver");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Connection con = DriverManager.getConnection(&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;"jdbc:oracle:thin:@localhost:1521:testdb", "test", "test");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;处理事务&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;con.setAutoCommit(false);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Statement st = con.createStatement();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;插入一个空对象&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;st.executeUpdate("insert into BLOBIMG&lt;font&gt;  &lt;/span&gt;values(103,empty_blob())");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;用&lt;/span&gt;&lt;font&gt;for update&lt;/span&gt;&lt;font&gt;方式锁定数据行&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;ResultSet rs = st.executeQuery(&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;"select contents from&lt;font&gt;  &lt;/span&gt;BLOBIMG&lt;font&gt;  &lt;/span&gt;where&lt;font&gt;  &lt;/span&gt;id=103 for update");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;if (rs.next()) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;   &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;得到&lt;/span&gt;&lt;font&gt;java.sql.Blob&lt;/span&gt;&lt;font&gt;对象，然后&lt;/span&gt;&lt;font&gt;Cast&lt;/span&gt;&lt;font&gt;为&lt;/span&gt;&lt;font&gt;oracle.sql.BLOB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1).;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;   &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;到数据库的输出流&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;OutputStream outStream = blob.getBinaryOutputStream();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;   &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;这里用一个文件模拟输入流&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;File file = new File("d:\\proxy.txt");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;  &lt;/span&gt;InputStream fin = new FileInputStream(file);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;将输入流写到输出流&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;byte[] b = new byte[blob.getBufferSize()];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;int len = 0;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;while ( (len = fin.read(b)) != -1) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;outStream.write(b, 0, len);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;//blob.putBytes(1,b);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;   &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;依次关闭（注意顺序）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;fin.close();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;outStream.flush();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;outStream.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;con.commit();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;con.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;（2）&lt;font&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;通过&lt;/span&gt;&lt;font&gt;JNDI&lt;/span&gt;&lt;font&gt;获得数据库连接&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;在&lt;/span&gt;&lt;font&gt;Weblogic&lt;/span&gt;&lt;font&gt;中配置到&lt;/span&gt;&lt;font&gt;Oracle&lt;/span&gt;&lt;font&gt;的&lt;/span&gt;&lt;font&gt;JDBC Connection Pool&lt;/span&gt;&lt;font&gt;和&lt;/span&gt;&lt;font&gt;DataSource&lt;/span&gt;&lt;font&gt;，绑定到&lt;/span&gt;&lt;font&gt;Context&lt;/span&gt;&lt;font&gt;中，假定绑定名为&lt;/span&gt;&lt;font&gt;”orads”&lt;/span&gt;&lt;font&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;为了得到数据库连接，做一个连接工厂，主要代码如下：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Context context = new InitialContext();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;ds = (DataSource) context.lookup("orads");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;return ds.getConnection();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;以下是&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;写入数据库的代码：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;      Connection con = ConnectionFactory.getConnection();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;con.setAutoCommit(false);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Statement st = con.createStatement();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;st.executeUpdate("insert into BLOBIMG values(103,empty_blob())");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;ResultSet rs = st.executeQuery(&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;"select contents from&lt;font&gt;  &lt;/span&gt;BLOBIMG&lt;font&gt;  &lt;/span&gt;where&lt;font&gt;  &lt;/span&gt;id=103 for update");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;if (rs.next()) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;   &lt;/span&gt;&lt;font&gt; &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;上面代码不变&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;这里不能用&lt;/span&gt;&lt;font&gt;oracle.sql.BLOB&lt;/span&gt;&lt;font&gt;，会报&lt;/span&gt;&lt;font&gt;ClassCast &lt;/span&gt;&lt;font&gt;异常&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;weblogic.jdbc.vendor.oracle.OracleThinBlobblob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs.getBlob(1);&lt;/span&gt;   &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;          &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;    &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;以后代码也不变&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;OutputStream outStream = blob.getBinaryOutputStream();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;File file = new File("d:\\proxy.txt");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;  &lt;/span&gt;InputStream fin = new FileInputStream(file);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;byte[] b = new byte[blob.getBufferSize()];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;int len = 0;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;while ( (len = fin.read(b)) != -1) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;outStream.write(b, 0, len);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;          fin.close();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;outStream.flush();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;outStream.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;con.commit();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;con.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;2．&lt;font&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;出库&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;从数据库中读出&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;数据没有上述由于连接池的不同带来的差异，只需要&lt;/span&gt;&lt;font&gt;J2SE&lt;/span&gt;&lt;font&gt;的标准类&lt;/span&gt;&lt;font&gt;java.sql.Blob&lt;/span&gt;&lt;font&gt;就可以取得输出流（注意区别&lt;/span&gt;&lt;font&gt;java.sql.Blob&lt;/span&gt;&lt;font&gt;和&lt;/span&gt;&lt;font&gt;oracle.sql.BLOB&lt;/span&gt;&lt;font&gt;）。代码如下：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Connection con = ConnectionFactory.getConnection();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;con.setAutoCommit(false);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;Statement st = con.createStatement();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;//&lt;/span&gt;&lt;font&gt;这里的&lt;/span&gt;&lt;font&gt;SQL&lt;/span&gt;&lt;font&gt;语句不再需要&lt;/span&gt;&lt;font&gt;”for update”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;ResultSet rs = st.executeQuery(&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;"select contents from&lt;font&gt;  &lt;/span&gt;BLOBIMG&lt;font&gt;  &lt;/span&gt;where&lt;font&gt;  &lt;/span&gt;id=103 ");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;if (rs.next()) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;java.sql.Blob blob = rs.getBlob(1);&lt;/span&gt;   &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;          &lt;p&gt;&lt;font&gt;  &lt;/span&gt; &lt;/p&gt;    &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;InputStream ins = blob.getBinaryStream();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt; &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;          &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;用文件模拟输出流&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;File file = new File("d:\\output.txt");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;   &lt;/span&gt;OutputStream fout = new FileOutputStream(file);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;        &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;下面将&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;数据写入文件&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;byte[] b = new byte[1024];&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;int len = 0;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;while ( (len = ins.read(b)) != -1) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;fout.write(b, 0, len);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;  &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;依次关闭&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;  &lt;/span&gt;fout.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;  &lt;/span&gt;ins.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;  &lt;/span&gt;con.commit();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;  &lt;/span&gt;con.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt; &lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;3．&lt;font&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;从&lt;/span&gt;&lt;font&gt;JSP&lt;/span&gt;&lt;font&gt;页面提交文件到数据库&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;   （1）&lt;font&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;提交页面的代码如下：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;form action="handle.jsp" enctype="multipart/form-data" method="post"&gt;&lt;/form&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;input name="id" value="103" type="hidden"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;input type="file"&gt;  &lt;/span&gt;name="fileToUpload"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;input type="submit"&gt;  &lt;/span&gt;value="Upload"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;    （2）&lt;font&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;由于&lt;/span&gt;&lt;font&gt;JSP&lt;/span&gt;&lt;font&gt;没有提供文件上传的处理能力，只有使用第三方的开发包。网络上开源的包有很多，我们这里选择&lt;/span&gt;&lt;font&gt;Apache Jakarta&lt;/span&gt;&lt;font&gt;的&lt;/span&gt;&lt;font&gt;FileUpload&lt;/span&gt;&lt;font&gt;，在&lt;/span&gt;&lt;font&gt;&lt;a href="http://jakarta.apache.org/commons/fileupload/index.html"&gt;http://jakarta.apache.org/commons/fileupload/index.html&lt;/a&gt; &lt;/span&gt;&lt;font&gt;可以得到下载包和完整的&lt;/span&gt;&lt;font&gt;API&lt;/span&gt;&lt;font&gt;文档。&lt;font&gt;法奥为&lt;/span&gt;&lt;/span&gt;&lt;font&gt;adajspException&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;处理页面（&lt;/span&gt;&lt;font&gt;handle.jsp&lt;/span&gt;&lt;font&gt;）的代码如下&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;%&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;boolean isMultipart = FileUpload.isMultipartContent(request);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;if (isMultipart) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;      &lt;/span&gt;// &lt;/span&gt;&lt;font&gt;建立一个新的&lt;/span&gt;&lt;font&gt;Upload&lt;/span&gt;&lt;font&gt;对象&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;DiskFileUpload upload = new DiskFileUpload();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;          &lt;/span&gt;// &lt;/span&gt;&lt;font&gt;设置上载文件的参数&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;//upload.setSizeThreshold(yourMaxMemorySize);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;//upload.setSizeMax(yourMaxRequestSize);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;String rootPath = getServletConfig().getServletContext().getRealPath("/") ;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;upload.setRepositoryPath(rootPath+&lt;a href="file://%5c%5cuploads/"&gt;\\uploads&lt;/a&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;        &lt;/span&gt;// &lt;/span&gt;&lt;font&gt;分析&lt;/span&gt;&lt;font&gt;request&lt;/span&gt;&lt;font&gt;中的传来的文件流，返回&lt;/span&gt;&lt;font&gt;Item&lt;/span&gt;&lt;font&gt;的集合，&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;     &lt;/span&gt;// &lt;/span&gt;&lt;font&gt;轮询&lt;/span&gt;&lt;font&gt;Items&lt;/span&gt;&lt;font&gt;，如果不是表单域，就是一个文件对象。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;List items = upload.parseRequest(request);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;Iterator iter = items.iterator();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;while (iter.hasNext()) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;FileItem item = (FileItem) iter.next();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;        &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;如果是文件对象&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;if (!item.isFormField()) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;          &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;如果是文本文件，可以直接显示&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;//out.println(item.getString());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;          &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;将上载的文件写到服务器的&lt;/span&gt;&lt;font&gt;\WEB-INF\webstart\&lt;/span&gt;&lt;font&gt;下，文件名为&lt;/span&gt;&lt;font&gt;test.txt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;//File uploadedFile = new File(rootPath+"\\uploads\\test.txt");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;//item.write(uploadedFile);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;      &lt;/span&gt;&lt;font&gt;  &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;下面的代码是将文件入库（略）：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;        &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;注意输入流的获取&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;…&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;InputStream uploadedStream = item.getInputStream();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;…&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;        &lt;/span&gt;//&lt;/span&gt;&lt;font&gt;否则是普通表单&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;else{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;out.println("FieldName: " + item.getFieldName()+"&lt;br /&gt;");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;out.println("Value: "+item.getString()+"&lt;br /&gt;");&lt;font&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;%&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;p&gt; &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;&lt;font&gt;4．&lt;font&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;从数据库读取&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;然后保存到客户端磁盘上&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;这段代码有点诡异，执行后将会弹出文件保存对话窗口，将&lt;/span&gt;&lt;font&gt;BLOB&lt;/span&gt;&lt;font&gt;数据读出保存到本地文件。全文列出如下：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;&lt;%@ page contentType="text/html; charset=GBK" import="java.io.*" import="java.sql.*" import="test.global.ConnectionFactory"%&gt;&lt;%&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;    &lt;/span&gt;&lt;font&gt;  &lt;/span&gt;Connection con = ConnectionFactory.getConnection();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;con.setAutoCommit(false);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;Statement st = con.createStatement();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;          &lt;/span&gt;&lt;font&gt; &lt;/span&gt;ResultSet rs = st.executeQuery(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;                     &lt;/span&gt;"select contents from&lt;font&gt;  &lt;/span&gt;BLOBIMG&lt;font&gt;  &lt;/span&gt;where&lt;font&gt;  &lt;/span&gt;id=103 ");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;if (rs.next()) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;Blob blob = rs.getBlob(1);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;InputStream ins = blob.getBinaryStream();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;            &lt;/span&gt;response.setContentType("application/unknown");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;response.addHeader("Content-Disposition", "attachment; filename="+"output.txt");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;  &lt;/span&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;             &lt;/span&gt;OutputStream outStream = response.getOutputStream();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;byte[] bytes = new byte[1024];&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;int len = 0;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;while ((len=ins.read(bytes))!=-1) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;            &lt;/span&gt;outStream.write(bytes,0,len);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;ins.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;outStream.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;outStream = null;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;con.commit();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;        &lt;/span&gt;con.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;      &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font&gt;&lt;span style="color: rgb(153, 51, 0);font-size:85%;" &gt;%&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;font&gt;注意，在&lt;/span&gt;&lt;font&gt;&lt;% … … %&gt;&lt;/span&gt;&lt;font&gt;之外，绝对不能有任何字符，空格或回车都不行&lt;/span&gt;&lt;font&gt;，不然会导致&lt;/span&gt;&lt;font&gt;outputStream&lt;/span&gt;&lt;font&gt;出错，对非&lt;/span&gt;&lt;font&gt;ASCII&lt;/span&gt;&lt;font&gt;输出文件来说就是格式错误不可读。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt; &lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770396017291057?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770396017291057/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770396017291057' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770396017291057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770396017291057'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oracleblob.html' title='在Oracle中存取BLOB对象实现文件的上传和下载_站长技术站  -'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770337453487273</id><published>2006-09-08T01:15:00.000-07:00</published><updated>2006-09-08T01:16:14.750-07:00</updated><title type='text'>动态SQL和PL/SQL的EXECUTE IMMEDIATE选项--ORACLE</title><content type='html'>EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前，EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能，较之以前它相当容易编码.尽管DBMS_SQL仍然可用，但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。&lt;br /&gt;　　&lt;br /&gt;　　使用技巧&lt;br /&gt;　　&lt;br /&gt;　　1. EXECUTE IMMEDIATE将不会提交一个DML事务执行，应该显式提交&lt;br /&gt;　　如果通过EXECUTE IMMEDIATE处理DML命令，那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据&lt;br /&gt;　　&lt;br /&gt;　　2. 不支持返回多行的查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors.&lt;br /&gt;　　&lt;br /&gt;　　3. 当执行SQL语句时，不要用分号，当执行PL/SQL块时，在其尾部用分号.&lt;br /&gt;　　&lt;br /&gt;　　4. 在Oracle手册中，未详细覆盖这些功能。下面的例子展示了所有用到Execute immediate的可能方面.希望能给你带来方便.&lt;br /&gt;　　&lt;br /&gt;　　5. 对于Forms开发者,当在PL/SQL 8.0.6.3.版本中，Forms 6i不能使用此功能.&lt;br /&gt;　　&lt;br /&gt;　　EXECUTE IMMEDIATE用法例子&lt;br /&gt;　　&lt;br /&gt;　　1. 在PL/SQL运行DDL语句&lt;br /&gt;　　&lt;br /&gt;　　 begin&lt;br /&gt;　　　execute immediate 'set role all';&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　2. 给动态语句传值(USING 子句)&lt;br /&gt;　　&lt;br /&gt;　　 declare&lt;br /&gt;　　　l_depnam varchar2(20) := 'testing';&lt;br /&gt;　　　l_loc　　varchar2(10) := 'Dubai';&lt;br /&gt;　　　begin&lt;br /&gt;　　　execute immediate 'insert into dept values　(:1, :2, :3)'&lt;br /&gt;　　　　using 50, l_depnam, l_loc;&lt;br /&gt;　　　commit;&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　3. 从动态语句检索值(INTO子句)&lt;br /&gt;　　&lt;br /&gt;　　 declare&lt;br /&gt;　　　l_cnt　　varchar2(20);&lt;br /&gt;　　 begin&lt;br /&gt;　　　execute immediate 'select count(1) from emp'&lt;br /&gt;　　　　into l_cnt;&lt;br /&gt;　　　dbms_output.put_line(l_cnt);&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　4. 动态调用例程.例程中用到的绑定变量参数必须指定参数类型.黓认为IN类型,其它类型必须显式指定&lt;br /&gt;　　&lt;br /&gt;　　 declare&lt;br /&gt;　　　l_routin　 varchar2(100) := 'gen2161.get_rowcnt';&lt;br /&gt;　　　l_tblnam　 varchar2(20) := 'emp';&lt;br /&gt;　　　l_cnt　　　number;&lt;br /&gt;　　　l_status　 varchar2(200);&lt;br /&gt;　　 begin&lt;br /&gt;　　　execute immediate 'begin ' || l_routin || '(:2, :3, :4); end;'&lt;br /&gt;　　　　using in l_tblnam, out l_cnt, in out l_status;&lt;br /&gt;　　&lt;br /&gt;　　　if l_status != 'OK' then&lt;br /&gt;　　　　 dbms_output.put_line('error');&lt;br /&gt;　　　end if;&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　5. 将返回值传递到PL/SQL记录类型;同样也可用%rowtype变量&lt;br /&gt;　　&lt;br /&gt;　　 declare&lt;br /&gt;　　　type empdtlrec is record (empno　number(4),&lt;br /&gt;　　　　　　　　　　　　　　　 ename　varchar2(20),&lt;br /&gt;　　　　　　　　　　　　　　　 deptno　number(2));&lt;br /&gt;　　　empdtl empdtlrec;&lt;br /&gt;　　 begin&lt;br /&gt;　　　execute immediate 'select empno, ename, deptno ' ||&lt;br /&gt;　　　　　　　　　　　 'from emp where empno = 7934'&lt;br /&gt;　　　　into empdtl;&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　6. 传递并检索值.INTO子句用在USING子句前&lt;br /&gt;　　&lt;br /&gt;　　 declare&lt;br /&gt;　　　l_dept　　pls_integer := 20;&lt;br /&gt;　　　l_nam　　 varchar2(20);&lt;br /&gt;　　　l_loc　　 varchar2(20);&lt;br /&gt;　　 begin&lt;br /&gt;　　　execute immediate 'select dname, loc from dept where deptno = :1'&lt;br /&gt;　　　　into l_nam, l_loc&lt;br /&gt;　　　　using l_dept ;&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　7. 多行查询选项.对此选项用insert语句填充临时表，用临时表进行进一步的处理,也可以用REF cursors纠正此缺憾.&lt;br /&gt;　　&lt;br /&gt;　　 declare&lt;br /&gt;　　　l_sal　 pls_integer := 2000;&lt;br /&gt;　　 begin&lt;br /&gt;　　　execute immediate 'insert into temp(empno, ename) ' ||&lt;br /&gt;　　　　　　　　　　　 '　　　　　select empno, ename from emp ' ||&lt;br /&gt;　　　　　　　　　　　 '　　　　　where　sal &gt; :1'&lt;br /&gt;　　　　using l_sal;&lt;br /&gt;　　　commit;&lt;br /&gt;　　 end;&lt;br /&gt;　　&lt;br /&gt;　　对于处理动态语句,EXECUTE IMMEDIATE比以前可能用到的更容易并且更高效.当意图执行动态语句时，适当地处理异常更加重要.应该关注于捕获所有可能的异常.&lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt;  &lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770337453487273?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770337453487273/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770337453487273' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770337453487273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770337453487273'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/sqlplsqlexecute-immediate-oracle.html' title='动态SQL和PL/SQL的EXECUTE IMMEDIATE选项--ORACLE'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770328972014928</id><published>2006-09-08T01:14:00.000-07:00</published><updated>2006-09-08T01:14:50.113-07:00</updated><title type='text'>Oracle自定义函数——f_henry_GetStringLength_</title><content type='html'>Oracle下的Length()函数不能区分中英文，只能得到字符数而不能得到字节数，很多时候插入string到字段中时总要先进行一次检查，防止 string长度超过了字段定义的长度，一般大家都是把这个检测放到应用程序中执行，用我写的这个小函数就可以实现在数据库服务器端对要插入的字段进行检 测。 &lt;p&gt;create or replace function f_henry_GetStringLength(pv_String in varchar2) return integer is&lt;br /&gt;  Result integer;&lt;br /&gt;  i number;&lt;br /&gt;begin&lt;br /&gt;  Result:=0;&lt;br /&gt;  if length(pv_String)=0 then&lt;br /&gt;    return(Result);&lt;br /&gt;  end if;&lt;br /&gt;  for i in 1 .. length(pv_String) loop&lt;br /&gt;    if ascii(substr(pv_String,i,1))&lt;256 then&lt;br /&gt;      Result:=Result+1;&lt;br /&gt;    else&lt;br /&gt;      Result:=Result+2;&lt;br /&gt;    end if;&lt;br /&gt;  end loop;&lt;br /&gt;  return(Result);&lt;br /&gt;end f_henry_GetStringLength;&lt;/p&gt;         &lt;p&gt;/*************************以下是测试***************************/&lt;/p&gt;   &lt;p&gt;SQL&gt; select length('啊$@oii发大幅') from dual;&lt;/p&gt;   &lt;p&gt;LENGTH('啊$@OII发大幅')&lt;br /&gt;-----------------------&lt;br /&gt;                      9&lt;/p&gt;   &lt;p&gt;SQL&gt; select f_henry_GetStringLength('啊$@oii发大幅') from dual;&lt;/p&gt;   &lt;p&gt;F_HENRY_GETSTRINGLENGTH('啊$@O&lt;br /&gt;------------------------------&lt;br /&gt;                            13&lt;/p&gt;&lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt;  &lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770328972014928?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770328972014928/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770328972014928' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770328972014928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770328972014928'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oraclefhenrygetstringlength.html' title='Oracle自定义函数——f_henry_GetStringLength_'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770316071613356</id><published>2006-09-08T01:12:00.000-07:00</published><updated>2006-09-08T01:12:40.840-07:00</updated><title type='text'>求在9i的存储过程中二维数组的完整例子及说明table ,varrry ,recor都行.</title><content type='html'>----------------------  单维数组  ------------------------ &lt;br /&gt; &lt;br /&gt;DECLARE &lt;br /&gt;TYPE  emp_ssn_array  IS  TABLE  OF  NUMBER &lt;br /&gt;INDEX  BY  BINARY_INTEGER; &lt;br /&gt; &lt;br /&gt;best_employees  emp_ssn_array; &lt;br /&gt;worst_employees  emp_ssn_array; &lt;br /&gt; &lt;br /&gt;BEGIN &lt;br /&gt;best_employees(1)  :=  '123456'; &lt;br /&gt;best_employees(2)  :=  '888888'; &lt;br /&gt; &lt;br /&gt;worst_employees(1)  :=  '222222'; &lt;br /&gt;worst_employees(2)  :=  '666666'; &lt;br /&gt; &lt;br /&gt;FOR  i  IN  1..best_employees.count  LOOP &lt;br /&gt;DBMS_OUTPUT.PUT_LINE('i='  ¦  ¦  i    ¦  ¦  ',  best_employees=  '    ¦  &amp;brvbarbest_employees(i) &lt;br /&gt;  ¦  ¦  ',  worst_employees=  '    ¦  &amp;brvbarworst_employees(i)); &lt;br /&gt;END  LOOP; &lt;br /&gt; &lt;br /&gt;END; &lt;br /&gt; &lt;br /&gt;----------------------  多维数组  ------------------------   &lt;br /&gt;DECLARE &lt;br /&gt; &lt;br /&gt;TYPE  emp_type  IS  RECORD &lt;br /&gt;(  emp_id  number, &lt;br /&gt;emp_name  string(80), &lt;br /&gt;emp_gender  string(80)); &lt;br /&gt; &lt;br /&gt;TYPE  emp_type_array  IS  TABLE  OF &lt;br /&gt;emp_type  INDEX  BY  BINARY_INTEGER; &lt;br /&gt; &lt;br /&gt;emp_rec_array  emp_type_array; &lt;br /&gt;emp_rec  emp_type; &lt;br /&gt; &lt;br /&gt;BEGIN &lt;br /&gt;emp_rec.emp_id  :=  300000000; &lt;br /&gt;emp_rec.emp_name  :=  'Barbara'; &lt;br /&gt;emp_rec.emp_gender  :=  'Female'; &lt;br /&gt; &lt;br /&gt;emp_rec_array(1)  :=  emp_rec; &lt;br /&gt; &lt;br /&gt;emp_rec.emp_id  :=  300000008; &lt;br /&gt;emp_rec.emp_name  :=  'Rick'; &lt;br /&gt;emp_rec.emp_gender  :=  'Male'; &lt;br /&gt; &lt;br /&gt;emp_rec_array(2)  :=  emp_rec; &lt;br /&gt; &lt;br /&gt;FOR  i  IN  1..emp_rec_array.count  LOOP &lt;br /&gt;DBMS_OUTPUT.PUT_LINE('i='  ¦  &amp;brvbari &lt;br /&gt;  ¦  ¦',  emp_id  ='  ¦  &amp;brvbaremp_rec_array(i).emp_id &lt;br /&gt;  ¦  ¦',  emp_name  ='  ¦  &amp;brvbaremp_rec_array(i).emp_name &lt;br /&gt;  ¦  ¦',  emp_gender  =  '  ¦  &amp;brvbaremp_rec_array(i).emp_gender); &lt;br /&gt;END  LOOP;   &lt;br /&gt; &lt;br /&gt;END; &lt;br /&gt;--------------  Result  -------------- &lt;br /&gt;i=1,  emp_id  =300000000,  emp_name  =Barbara,  emp_gender  =  Female &lt;br /&gt;i=2,  emp_id  =300000008,  emp_name  =Rick,  emp_gender  =  Male &lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt;  &lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770316071613356?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770316071613356/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770316071613356' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770316071613356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770316071613356'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/9itable-varrry-recor.html' title='求在9i的存储过程中二维数组的完整例子及说明table ,varrry ,recor都行.'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770305577470909</id><published>2006-09-08T01:10:00.000-07:00</published><updated>2006-09-08T01:10:57.370-07:00</updated><title type='text'>oracle错误信息大全</title><content type='html'>ORACLE的这类错误在ORALCE的文档中有详细说明，但原因及措施说明不详细，本文当着重说明如何解决这类错误。  &lt;p&gt;　　&lt;strong&gt;1、ORA-12571、ORA-03113、ORA-03114、ORA-01041&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:客户端(代理或应用服务器)有时报这类断连错误&lt;/p&gt;  &lt;p&gt;　　原因:如果偶尔出现一次，则可能为网络原因或用户异常中止，如果经常出现则为客户端与服务端的字符集不一致。&lt;/p&gt;  &lt;p&gt;　　措施:如果偶尔出现，可在服务端的协议配置文件PROTOCOL.ORA中增加一行&lt;/p&gt;  &lt;p&gt;　　TCP.NODELAY=YES;&lt;/p&gt;  &lt;p&gt;　　如果经常出现，则为客户端与服务端字符集不一致或网络原因。&lt;/p&gt;  &lt;p&gt;　　客户端的字符集在注册表里定义:　　　　HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG&lt;/p&gt;  &lt;p&gt;　　在客户端注册表中的TCP参数项中设置　　　TCPMAXDATARETRANSMITIONS=20。&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;2、ORA-01000&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:达到会话允许的最大&lt;a href="http://www.souzz.net/html/database/ORACLE/9467.html"&gt;游标&lt;/a&gt;数&lt;/p&gt;  &lt;p&gt;　　原因:达到会话允许的最大游标数&lt;/p&gt;  &lt;p&gt;　　措施:有两种解决方法:&lt;/p&gt;  &lt;p&gt;　　(1)在初始化文件INIT.ORA文件中增加OPEN_CURSORS的数量，一般要求大于200。&lt;/p&gt;  &lt;p&gt;　　(2)在应用级，与开发工具有关，例如设置MAXOPEN_CURSORS等。&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;3、ORA-01545&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:某个&lt;a href="http://www.souzz.net/html/edu/php/php10/6732.html"&gt;回滚段&lt;/a&gt;不可用&lt;/p&gt;  &lt;p&gt;　　原因:(1)当使回滚段ONLINE时，但回滚段不可用，例如回滚段所在表空间OFFLINE;&lt;/p&gt;  &lt;p&gt;　　(2) 当使回滚段ONLINE时，但回滚段已ONLINE，例如回滚段被使用两次，典型的案例如OPS方式时，回滚段不能公有;&lt;/p&gt;  &lt;p&gt;　　(3)删除回滚段时，回滚段中有活动的事务;&lt;/p&gt;  &lt;p&gt;　　措施:(1)确保回滚段可&lt;/p&gt;  &lt;p&gt;　　(2)从初始化文件INIT.ORA的参数ROLLBACK)SEGMENTS中删除指定的回滚段。&lt;/p&gt;  &lt;p&gt;　　(3)可以将回滚段所在表空间删除，取消UNDO事务&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;4、ORA-0165x&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:表空间没有足够的空间供分配&lt;/p&gt;  &lt;p&gt;　　原因:表空间已满;存储参数不合理，NEXT太小;没有连续的区间&lt;/p&gt;  &lt;p&gt;　　措施:如果表空间已满，则需为表空间增加文件;如果存储参数不合理，则需增加INITIAL和NEXT;如果没有连续的区间，需要合并空闲的表空间。&lt;/p&gt;  &lt;p&gt;　　查看空间碎片用DBA_FREE_SPACE&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;5、ORA-01555&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:当前会话无法读到以前版本的数据&lt;/p&gt;  &lt;p&gt;　　原因:原因很多，主要原因有下列:回滚段太小、太少;回滚段冲突;交叉提交(FETCH_ACROSS)&lt;/p&gt;  &lt;p&gt;　　措施:增加回滚段数量;&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;6、ORA-04031&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:共享池内存区内存不够，或产生内存碎片&lt;/p&gt;  &lt;p&gt;　　原因:当试图装载一个大包时或执行一个较大的&lt;a href="http://www.souzz.net/html/edu/php/php10/6747.html"&gt;存储过程&lt;/a&gt;时，而共享池没有连续的内存空间。&lt;/p&gt;  &lt;p&gt;　　措施:如果是内存不够，则增加SHARE)POOL_SIZE;&lt;/p&gt;  &lt;p&gt;　　如果是内存碎片，执行alter system flush share_pool&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;7、ORA-04091&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:触发器工作不正常&lt;/p&gt;  &lt;p&gt;　　原因:一个行触发读取或修改变化的表(正在修改、插入)时，产生这种错误。&lt;/p&gt;  &lt;p&gt;　　措施:检查触发器脚本，保证引用完整性&lt;/p&gt;  &lt;p&gt;　　&lt;strong&gt;8、ORA-01242、ORA-01113&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;　　特征:介质故障导致数据库宕机&lt;/p&gt;  &lt;p&gt;　　原因:介质故障。&lt;/p&gt;  &lt;p&gt;　　措施:检查硬件故障;修改dbshut脚本，将其中的STARTUP命令修改为:&lt;/p&gt;  &lt;p&gt;　　Startup open recover&lt;/p&gt;  &lt;p&gt;　　Alter database open&lt;/p&gt;&lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt;  &lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770305577470909?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770305577470909/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770305577470909' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770305577470909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770305577470909'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oracle_115770305577470909.html' title='oracle错误信息大全'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115770295429902098</id><published>2006-09-08T01:08:00.000-07:00</published><updated>2006-09-08T01:09:20.653-07:00</updated><title type='text'>ORACLE函数大全</title><content type='html'>SQL中的单记录函数&lt;br /&gt;  1.ASCII&lt;br /&gt;  返回与指定的字符对应的十进制数;&lt;br /&gt;  SQL&gt; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;&lt;br /&gt;  &lt;br /&gt;          A         A      ZERO     SPACE&lt;br /&gt;  --------- --------- --------- ---------&lt;br /&gt;         65        97        48        32&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  2.CHR&lt;br /&gt;  给出整数,返回对应的字符;&lt;br /&gt;  SQL&gt; select chr(54740) zhao,chr(65) chr65 from dual;&lt;br /&gt;  &lt;br /&gt;  ZH C&lt;br /&gt;  -- -&lt;br /&gt;  赵 A&lt;br /&gt;  &lt;br /&gt;  3.CONCAT&lt;br /&gt;  连接两个字符串;&lt;br /&gt;  SQL&gt; select concat('010-','88888888')||'转23'  高乾竞电话 from dual;&lt;br /&gt;  &lt;br /&gt;  高乾竞电话&lt;br /&gt;  ----------------&lt;br /&gt;  010-88888888转23&lt;br /&gt;  &lt;br /&gt;  4.INITCAP&lt;br /&gt;  返回字符串并将字符串的第一个字母变为大写;&lt;br /&gt;  SQL&gt; select initcap('smith') upp from dual;&lt;br /&gt;  &lt;br /&gt;  UPP&lt;br /&gt;  -----&lt;br /&gt;  Smith&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  5.INSTR(C1,C2,I,J)&lt;br /&gt;  在一个字符串中搜索指定的字符,返回发现指定的字符的位置;&lt;br /&gt;  C1    被搜索的字符串&lt;br /&gt;  C2    希望搜索的字符串&lt;br /&gt;  I     搜索的开始位置,默认为1&lt;br /&gt;  J     出现的位置,默认为1&lt;br /&gt;  SQL&gt; select instr('oracle traning','ra',1,2) instring from dual;&lt;br /&gt;  &lt;br /&gt;   INSTRING&lt;br /&gt;  ---------&lt;br /&gt;          9&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  6.LENGTH&lt;br /&gt;  返回字符串的长度;&lt;br /&gt;  SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;&lt;br /&gt;  &lt;br /&gt;  NAME   LENGTH(NAME) ADDR             LENGTH(ADDR)       SAL LENGTH(TO_CHAR(SAL))&lt;br /&gt;  ------ ------------ ---------------- ------------ --------- --------------------&lt;br /&gt;  高乾竞            3 北京市海锭区                6   9999.99                    7&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  7.LOWER&lt;br /&gt;  返回字符串,并将所有的字符小写&lt;br /&gt;  SQL&gt; select lower('AaBbCcDd')AaBbCcDd from dual;&lt;br /&gt;  &lt;br /&gt;  AABBCCDD&lt;br /&gt;  --------&lt;br /&gt;  aabbccdd&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  8.UPPER&lt;br /&gt;  返回字符串,并将所有的字符大写&lt;br /&gt;  SQL&gt; select upper('AaBbCcDd') upper from dual;&lt;br /&gt;  &lt;br /&gt;  UPPER&lt;br /&gt;  --------&lt;br /&gt;  AABBCCDD&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  9.RPAD和LPAD(粘贴字符)&lt;br /&gt;  RPAD  在列的右边粘贴字符&lt;br /&gt;  LPAD  在列的左边粘贴字符&lt;br /&gt;  SQL&gt; select lpad(rpad('gao',10,'*'),17,'*')from dual;&lt;br /&gt;  &lt;br /&gt;  LPAD(RPAD('GAO',1&lt;br /&gt;  -----------------&lt;br /&gt;  *******gao*******&lt;br /&gt;  不够字符则用*来填满&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  10.LTRIM和RTRIM&lt;br /&gt;  LTRIM  删除左边出现的字符串&lt;br /&gt;  RTRIM  删除右边出现的字符串&lt;br /&gt;  SQL&gt; select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;&lt;br /&gt;  &lt;br /&gt;  LTRIM(RTRIM('&lt;br /&gt;  -------------&lt;br /&gt;  gao qian jing&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  11.SUBSTR(string,start,count)&lt;br /&gt;  取子字符串,从start开始,取count个&lt;br /&gt;  SQL&gt; select substr('13088888888',3,8) from dual;&lt;br /&gt;  &lt;br /&gt;  SUBSTR('&lt;br /&gt;  --------&lt;br /&gt;  08888888&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  12.REPLACE('string','s1','s2')&lt;br /&gt;  string   希望被替换的字符或变��&lt;br /&gt;  s1       被替换的字符串&lt;br /&gt;  s2       要替换的字符串&lt;br /&gt;  SQL&gt; select replace('he love you','he','i') from dual;&lt;br /&gt;  &lt;br /&gt;  REPLACE('H&lt;br /&gt;  ----------&lt;br /&gt;  i love you&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  13.SOUNDEX&lt;br /&gt;  返回一个与给定的字符串读音相同的字符串&lt;br /&gt;  SQL&gt; create table table1(xm varchar(8));&lt;br /&gt;  SQL&gt; insert into table1 values('weather');&lt;br /&gt;  SQL&gt; insert into table1 values('wether');&lt;br /&gt;  SQL&gt; insert into table1 values('gao');&lt;br /&gt;  &lt;br /&gt;  SQL&gt; select xm from table1 where soundex(xm)=soundex('weather');&lt;br /&gt;  &lt;br /&gt;  XM&lt;br /&gt;  --------&lt;br /&gt;  weather&lt;br /&gt;  wether&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  14.TRIM('s' from 'string')&lt;br /&gt;  LEADING   剪掉前面的字符&lt;br /&gt;  TRAILING  剪掉后面的字符&lt;br /&gt;  如果不指定,默认为空格符&lt;br /&gt;  &lt;br /&gt;  15.ABS&lt;br /&gt;  返回指定值的绝对值&lt;br /&gt;  SQL&gt; select abs(100),abs(-100) from dual;&lt;br /&gt;  &lt;br /&gt;   ABS(100) ABS(-100)&lt;br /&gt;  --------- ---------&lt;br /&gt;        100       100&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  16.ACOS&lt;br /&gt;  给出反余弦的值&lt;br /&gt;  SQL&gt; select acos(-1) from dual;&lt;br /&gt;  &lt;br /&gt;   ACOS(-1)&lt;br /&gt;  ---------&lt;br /&gt;  3.1415927&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  17.ASIN&lt;br /&gt;  给出反正弦的值&lt;br /&gt;  SQL&gt; select asin(0.5) from dual;&lt;br /&gt;  &lt;br /&gt;  ASIN(0.5)&lt;br /&gt;  ---------&lt;br /&gt;  .52359878&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  18.ATAN&lt;br /&gt;  返回一个数字的反正切值&lt;br /&gt;  SQL&gt; select atan(1) from dual;&lt;br /&gt;  &lt;br /&gt;    ATAN(1)&lt;br /&gt;  ---------&lt;br /&gt;  .78539816&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  19.CEIL&lt;br /&gt;  返回大于或等于给出数字的最小整数&lt;br /&gt;  SQL&gt; select ceil(3.1415927) from dual;&lt;br /&gt;  &lt;br /&gt;  CEIL(3.1415927)&lt;br /&gt;  ---------------&lt;br /&gt;                4&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  20.COS&lt;br /&gt;  返回一个给定数字的余弦&lt;br /&gt;  SQL&gt; select cos(-3.1415927) from dual;&lt;br /&gt;  &lt;br /&gt;  COS(-3.1415927)&lt;br /&gt;  ---------------&lt;br /&gt;               -1&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  21.COSH&lt;br /&gt;  返回一个数字反余弦值&lt;br /&gt;  SQL&gt; select cosh(20) from dual;&lt;br /&gt;  &lt;br /&gt;   COSH(20)&lt;br /&gt;  ---------&lt;br /&gt;  242582598&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  22.EXP&lt;br /&gt;  返回一个数字e的n次方根&lt;br /&gt;  SQL&gt; select exp(2),exp(1) from dual;&lt;br /&gt;  &lt;br /&gt;     EXP(2)    EXP(1)&lt;br /&gt;  --------- ---------&lt;br /&gt;  7.3890561 2.7182818&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  23.FLOOR&lt;br /&gt;  对给定的数字取整数&lt;br /&gt;  SQL&gt; select floor(2345.67) from dual;&lt;br /&gt;  &lt;br /&gt;  FLOOR(2345.67)&lt;br /&gt;  --------------&lt;br /&gt;            2345&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  24.LN&lt;br /&gt;  返回一个数字的对数值&lt;br /&gt;  SQL&gt; select ln(1),ln(2),ln(2.7182818) from dual;&lt;br /&gt;  &lt;br /&gt;      LN(1)     LN(2) LN(2.7182818)&lt;br /&gt;  --------- --------- -------------&lt;br /&gt;          0 .69314718     .99999999&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  25.LOG(n1,n2)&lt;br /&gt;  返回一个以n1为底n2的对数&lt;br /&gt;  SQL&gt; select log(2,1),log(2,4) from dual;&lt;br /&gt;  &lt;br /&gt;   LOG(2,1)  LOG(2,4)&lt;br /&gt;  --------- ---------&lt;br /&gt;          0         2&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  26.MOD(n1,n2)&lt;br /&gt;  返回一个n1除以n2的余数&lt;br /&gt;  SQL&gt; select mod(10,3),mod(3,3),mod(2,3) from dual;&lt;br /&gt;  &lt;br /&gt;  MOD(10,3)  MOD(3,3)  MOD(2,3)&lt;br /&gt;  --------- --------- ---------&lt;br /&gt;          1         0         2&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  27.POWER&lt;br /&gt;  返回n1的n2次方根&lt;br /&gt;  SQL&gt; select power(2,10),power(3,3) from dual;&lt;br /&gt;  &lt;br /&gt;  POWER(2,10) POWER(3,3)&lt;br /&gt;  ----------- ----------&lt;br /&gt;         1024         27&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  28.ROUND和TRUNC&lt;br /&gt;  按照指定的精度进行舍入&lt;br /&gt;  SQL&gt; select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;&lt;br /&gt;  &lt;br /&gt;  ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)&lt;br /&gt;  ----------- ------------ ----------- ------------&lt;br /&gt;           56          -55          55          -55&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  29.SIGN&lt;br /&gt;  取数字n的符号,大于0返回1,小于0返回-1,等于0返回0&lt;br /&gt;  SQL&gt; select sign(123),sign(-100),sign(0) from dual;&lt;br /&gt;  &lt;br /&gt;  SIGN(123) SIGN(-100)   SIGN(0)&lt;br /&gt;  --------- ---------- ---------&lt;br /&gt;          1         -1         0&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  30.SIN&lt;br /&gt;  返回一个数字的正弦值&lt;br /&gt;  SQL&gt; select sin(1.57079) from dual;&lt;br /&gt;  &lt;br /&gt;  SIN(1.57079)&lt;br /&gt;  ------------&lt;br /&gt;             1&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  31.SIGH&lt;br /&gt;  返回双曲正弦的值&lt;br /&gt;  SQL&gt; select sin(20),sinh(20) from dual;&lt;br /&gt;  &lt;br /&gt;    SIN(20)  SINH(20)&lt;br /&gt;  --------- ---------&lt;br /&gt;  .91294525 242582598&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  32.SQRT&lt;br /&gt;  返回数字n的根&lt;br /&gt;  SQL&gt; select sqrt(64),sqrt(10) from dual;&lt;br /&gt;  &lt;br /&gt;   SQRT(64)  SQRT(10)&lt;br /&gt;  --------- ---------&lt;br /&gt;          8 3.1622777&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  33.TAN&lt;br /&gt;  返回数字的正���值&lt;br /&gt;  SQL&gt; select tan(20),tan(10) from dual;&lt;br /&gt;  &lt;br /&gt;    TAN(20)   TAN(10)&lt;br /&gt;  --------- ---------&lt;br /&gt;  2.2371609 .64836083&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  34.TANH&lt;br /&gt;  返回数字n的双曲正切值&lt;br /&gt;  SQL&gt; select tanh(20),tan(20) from dual;&lt;br /&gt;  &lt;br /&gt;   TANH(20)   TAN(20)&lt;br /&gt;  --------- ---------&lt;br /&gt;          1 2.2371609&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  35.TRUNC&lt;br /&gt;  按照指定的精度截取一个数&lt;br /&gt;  SQL&gt; select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;&lt;br /&gt;  &lt;br /&gt;     TRUNC1 TRUNC(124.16666,2)&lt;br /&gt;  --------- ------------------&lt;br /&gt;        100             124.16&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  36.ADD_MONTHS&lt;br /&gt;  增加或减去月份&lt;br /&gt;  SQL&gt; select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;&lt;br /&gt;  &lt;br /&gt;  TO_CHA&lt;br /&gt;  ------&lt;br /&gt;  200002&lt;br /&gt;  SQL&gt; select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;&lt;br /&gt;  &lt;br /&gt;  TO_CHA&lt;br /&gt;  ------&lt;br /&gt;  199910&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  37.LAST_DAY&lt;br /&gt;  返回日期的最后一天&lt;br /&gt;  SQL&gt; select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;&lt;br /&gt;  &lt;br /&gt;  TO_CHAR(SY TO_CHAR((S&lt;br /&gt;  ---------- ----------&lt;br /&gt;  2004.05.09 2004.05.10&lt;br /&gt;  SQL&gt; select last_day(sysdate) from dual;&lt;br /&gt;  &lt;br /&gt;  LAST_DAY(S&lt;br /&gt;  ----------&lt;br /&gt;  31-5月 -04&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  38.MONTHS_BETWEEN(date2,date1)&lt;br /&gt;  给出date2-date1的月份&lt;br /&gt;  SQL&gt; select months_between('19-12月-1999','19-3月-1999') mon_between from dual;&lt;br /&gt;  &lt;br /&gt;  MON_BETWEEN&lt;br /&gt;  -----------&lt;br /&gt;            9&lt;br /&gt;  SQL&gt;selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;&lt;br /&gt;  &lt;br /&gt;   MON_BETW&lt;br /&gt;  ---------&lt;br /&gt;        -60&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  39.NEW_TIME(date,'this','that')&lt;br /&gt;  给出在this时区=other时区的日期和时间&lt;br /&gt;  SQL&gt; select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time&lt;br /&gt;    2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;&lt;br /&gt;  &lt;br /&gt;  BJ_TIME             LOS_ANGLES&lt;br /&gt;  ------------------- -------------------&lt;br /&gt;  2004.05.09 11:05:32 2004.05.09 18:05:32&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  40.NEXT_DAY(date,'day')&lt;br /&gt;  给出日期date和星期x之后计算下一个星期的日期&lt;br /&gt;  SQL&gt; select next_day('18-5月-2001','星期五') next_day from dual;&lt;br /&gt;  &lt;br /&gt;  NEXT_DAY&lt;br /&gt;  ----------&lt;br /&gt;  25-5月 -01&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  41.SYSDATE&lt;br /&gt;  用来得到系统的当前日期&lt;br /&gt;  SQL&gt; select to_char(sysdate,'dd-mm-yyyy day') from dual;&lt;br /&gt;  &lt;br /&gt;  TO_CHAR(SYSDATE,'&lt;br /&gt;  -----------------&lt;br /&gt;  09-05-2004 星期日&lt;br /&gt;  trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒&lt;br /&gt;  SQL&gt; select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,&lt;br /&gt;    2  to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;&lt;br /&gt;  &lt;br /&gt;  HH                  HHMM&lt;br /&gt;  ------------------- -------------------&lt;br /&gt;  2004.05.09 11:00:00 2004.05.09 11:17:00&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  42.CHARTOROWID&lt;br /&gt;  将字符数据类型转换为ROWID类型&lt;br /&gt;  SQL&gt; select rowid,rowidtochar(rowid),ename from scott.emp;&lt;br /&gt;  &lt;br /&gt;  ROWID              ROWIDTOCHAR(ROWID) ENAME&lt;br /&gt;  ------------------ ------------------ ----------&lt;br /&gt;  AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH&lt;br /&gt;  AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN&lt;br /&gt;  AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD&lt;br /&gt;  AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  43.CONVERT(c,dset,sset)&lt;br /&gt;  将源字符串 sset从一个语言字符集转换到另一个目的dset字符集&lt;br /&gt;  SQL&gt; select convert('strutz','we8hp','f7dec') "conversion" from dual;&lt;br /&gt;  &lt;br /&gt;  conver&lt;br /&gt;  ------&lt;br /&gt;  strutz&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  44.HEXTORAW&lt;br /&gt;  将一个十六进制构成的字符串转换为二进制&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  45.RAWTOHEXT&lt;br /&gt;  将一个二进制构成的字符串转换为十六进制&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  46.ROWIDTOCHAR&lt;br /&gt;  将ROWID数据类型转换为字符类型&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  47.TO_CHAR(date,'format')&lt;br /&gt;  SQL&gt; select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;&lt;br /&gt;  &lt;br /&gt;  TO_CHAR(SYSDATE,'YY&lt;br /&gt;  -------------------&lt;br /&gt;  2004/05/09 21:14:41&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  48.TO_DATE(string,'format')&lt;br /&gt;  将字符串转化为ORACLE中的一个日期&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  49.TO_MULTI_BYTE&lt;br /&gt;  将字符串中的单字节字符转化为多字节字符&lt;br /&gt;  SQL&gt;  select to_multi_byte('高') from dual;&lt;br /&gt;  &lt;br /&gt;  TO&lt;br /&gt;  --&lt;br /&gt;  高&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  50.TO_NUMBER&lt;br /&gt;  将给出的字符转换为数字&lt;br /&gt;  SQL&gt; select to_number('1999') year from dual;&lt;br /&gt;  &lt;br /&gt;       YEAR&lt;br /&gt;  ---------&lt;br /&gt;       1999&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  51.BFILENAME(dir,file)&lt;br /&gt;  指定一个外部二进制文件&lt;br /&gt;  SQL&gt;insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  52.CONVERT('x','desc','source')&lt;br /&gt;  将x字段或变量的源source转换为desc&lt;br /&gt;  SQL&gt; select sid,serial#,username,decode(command,&lt;br /&gt;    2  0,'none',&lt;br /&gt;    3  2,'insert',&lt;br /&gt;    4  3,&lt;br /&gt;    5  'select',&lt;br /&gt;    6  6,'update',&lt;br /&gt;    7  7,'delete',&lt;br /&gt;    8  8,'drop',&lt;br /&gt;    9  'other') cmd  from v$session where type!='background';&lt;br /&gt;  &lt;br /&gt;        SID   SERIAL# USERNAME                       CMD&lt;br /&gt;  --------- --------- ------------------------------ ------&lt;br /&gt;          1         1                                none&lt;br /&gt;          2         1                                none&lt;br /&gt;          3         1                                none&lt;br /&gt;          4         1                                none&lt;br /&gt;          5         1                                none&lt;br /&gt;          6         1                                none&lt;br /&gt;          7      1275                                none&lt;br /&gt;          8      1275                                none&lt;br /&gt;          9        20 GAO                            select&lt;br /&gt;         10        40 GAO                            none&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  53.DUMP(s,fmt,start,length)&lt;br /&gt;  DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值&lt;br /&gt;  SQL&gt; col global_name for a30&lt;br /&gt;  SQL&gt; col dump_string for a50&lt;br /&gt;  SQL&gt; set lin 200&lt;br /&gt;  SQL&gt; select global_name,dump(global_name,1017,8,5) dump_string from global_name;&lt;br /&gt;  &lt;br /&gt;  GLOBAL_NAME                    DUMP_STRING&lt;br /&gt;  ------------------------------ --------------------------------------------------&lt;br /&gt;  ORACLE.WORLD                   Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  54.EMPTY_BLOB()和EMPTY_CLOB()&lt;br /&gt;  这两个函数都是用来对大数据类型字段进行初始化操作的函数&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  55.GREATEST&lt;br /&gt;  返回一组表达式中的最大值,即比较字符的编码大小.&lt;br /&gt;  SQL&gt; select greatest('AA','AB','AC') from dual;&lt;br /&gt;  &lt;br /&gt;  GR&lt;br /&gt;  --&lt;br /&gt;  AC&lt;br /&gt;  SQL&gt; select greatest('啊','安','天') from dual;&lt;br /&gt;  &lt;br /&gt;  GR&lt;br /&gt;  --&lt;br /&gt;  天&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  56.LEAST&lt;br /&gt;  返回一组表达式中的最小��&lt;br /&gt;  SQL&gt; select least('啊','安','天') from dual;&lt;br /&gt;  &lt;br /&gt;  LE&lt;br /&gt;  --&lt;br /&gt;  啊&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  57.UID&lt;br /&gt;  返回标识当前用户的唯一整数&lt;br /&gt;  SQL&gt; show user&lt;br /&gt;  USER 为"GAO"&lt;br /&gt;  SQL&gt; select username,user_id from dba_users where user_id=uid;&lt;br /&gt;  &lt;br /&gt;  USERNAME                         USER_ID&lt;br /&gt;  ------------------------------ ---------&lt;br /&gt;  GAO                                   25&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  58.USER&lt;br /&gt;  返回当前用户的名字&lt;br /&gt;  SQL&gt; select user from  dual;&lt;br /&gt;  &lt;br /&gt;  USER&lt;br /&gt;  ------------------------------&lt;br /&gt;  GAO&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  59.USEREVN&lt;br /&gt;  返回当前用户环境的信息,opt可以是:&lt;br /&gt;  ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE&lt;br /&gt;  ISDBA  查看当前用户是否是DBA如果是则返回true&lt;br /&gt;  SQL&gt; select userenv('isdba') from dual;&lt;br /&gt;  &lt;br /&gt;  USEREN&lt;br /&gt;  ------&lt;br /&gt;  FALSE&lt;br /&gt;  SQL&gt; select userenv('isdba') from dual;&lt;br /&gt;  &lt;br /&gt;  USEREN&lt;br /&gt;  ------&lt;br /&gt;  TRUE&lt;br /&gt;  SESSION&lt;br /&gt;  返回会话标志&lt;br /&gt;  SQL&gt; select userenv('sessionid') from dual;&lt;br /&gt;  &lt;br /&gt;  USERENV('SESSIONID')&lt;br /&gt;  --------------------&lt;br /&gt;                   152&lt;br /&gt;  ENTRYID&lt;br /&gt;  返回会话人口标志&lt;br /&gt;  SQL&gt; select userenv('entryid') from dual;&lt;br /&gt;  &lt;br /&gt;  USERENV('ENTRYID')&lt;br /&gt;  ------------------&lt;br /&gt;                   0&lt;br /&gt;  INSTANCE&lt;br /&gt;  返回当前INSTANCE的标志&lt;br /&gt;  SQL&gt; select userenv('instance') from dual;&lt;br /&gt;  &lt;br /&gt;  USERENV('INSTANCE')&lt;br /&gt;  -------------------&lt;br /&gt;                    1&lt;br /&gt;  LANGUAGE&lt;br /&gt;  返回当前环境变量&lt;br /&gt;  SQL&gt; select userenv('language') from dual;&lt;br /&gt;  &lt;br /&gt;  USERENV('LANGUAGE')&lt;br /&gt;  ----------------------------------------------------&lt;br /&gt;  SIMPLIFIED CHINESE_CHINA.ZHS16GBK&lt;br /&gt;  LANG&lt;br /&gt;  返回当前环境的语言的缩写&lt;br /&gt;  SQL&gt; select userenv('lang') from dual;&lt;br /&gt;  &lt;br /&gt;  USERENV('LANG')&lt;br /&gt;  ----------------------------------------------------&lt;br /&gt;  ZHS&lt;br /&gt;  TERMINAL&lt;br /&gt;  返回用户的终端或机器的标志&lt;br /&gt;  SQL&gt; select userenv('terminal') from dual;&lt;br /&gt;  &lt;br /&gt;  USERENV('TERMINA&lt;br /&gt;  ----------------&lt;br /&gt;  GAO&lt;br /&gt;  VSIZE(X)&lt;br /&gt;  返回X的大小(字节)数&lt;br /&gt;  SQL&gt; select vsize(user),user from dual;&lt;br /&gt;  &lt;br /&gt;  VSIZE(USER) USER&lt;br /&gt;  ----------- ------------------------------&lt;br /&gt;            6 SYSTEM&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  60.AVG(DISTINCT|ALL)&lt;br /&gt;  all表示对所有的值求平均值,distinct只对不同的值求平均值&lt;br /&gt;  SQLWKS&gt; create table table3(xm varchar(8),sal number(7,2));&lt;br /&gt;  语句已处理。&lt;br /&gt;  SQLWKS&gt;  insert into table3 values('gao',1111.11);&lt;br /&gt;  SQLWKS&gt;  insert into table3 values('gao',1111.11);&lt;br /&gt;  SQLWKS&gt;  insert into table3 values('zhu',5555.55);&lt;br /&gt;  SQLWKS&gt; commit;&lt;br /&gt;  &lt;br /&gt;  SQL&gt; select avg(distinct sal) from gao.table3;&lt;br /&gt;  &lt;br /&gt;  AVG(DISTINCTSAL)&lt;br /&gt;  ----------------&lt;br /&gt;           3333.33&lt;br /&gt;  &lt;br /&gt;  SQL&gt; select avg(all sal) from gao.table3;&lt;br /&gt;  &lt;br /&gt;  AVG(ALLSAL)&lt;br /&gt;  -----------&lt;br /&gt;      2592.59&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  61.MAX(DISTINCT|ALL)&lt;br /&gt;  求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次&lt;br /&gt;  SQL&gt; select max(distinct sal) from scott.emp;&lt;br /&gt;  &lt;br /&gt;  MAX(DISTINCTSAL)&lt;br /&gt;  ----------------&lt;br /&gt;              5000&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  62.MIN(DISTINCT|ALL)&lt;br /&gt;  求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次&lt;br /&gt;  SQL&gt; select min(all sal) from gao.table3;&lt;br /&gt;  &lt;br /&gt;  MIN(ALLSAL)&lt;br /&gt;  -----------&lt;br /&gt;      1111.11&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  63.STDDEV(distinct|all)&lt;br /&gt;  求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差&lt;br /&gt;  SQL&gt; select stddev(sal) from scott.emp;&lt;br /&gt;  &lt;br /&gt;  STDDEV(SAL)&lt;br /&gt;  -----------&lt;br /&gt;    1182.5032&lt;br /&gt;  &lt;br /&gt;  SQL&gt; select stddev(distinct sal) from scott.emp;&lt;br /&gt;  &lt;br /&gt;  STDDEV(DISTINCTSAL)&lt;br /&gt;  -------------------&lt;br /&gt;             1229.951&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  64.VARIANCE(DISTINCT|ALL)&lt;br /&gt;  求协方差&lt;br /&gt;  &lt;br /&gt;  SQL&gt; select variance(sal) from scott.emp;&lt;br /&gt;  &lt;br /&gt;  VARIANCE(SAL)&lt;br /&gt;  -------------&lt;br /&gt;      1398313.9&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  65.GROUP BY&lt;br /&gt;  主要用来对一组数进行统计&lt;br /&gt;  SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno;&lt;br /&gt;  &lt;br /&gt;     DEPTNO  COUNT(*)  SUM(SAL)&lt;br /&gt;  --------- --------- ---------&lt;br /&gt;         10         3      8750&lt;br /&gt;         20         5     10875&lt;br /&gt;         30         6      9400&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  66.HAVING&lt;br /&gt;  对分组统计再加限制条件&lt;br /&gt;  SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)&gt;=5;&lt;br /&gt;  &lt;br /&gt;     DEPTNO  COUNT(*)  SUM(SAL)&lt;br /&gt;  --------- --------- ---------&lt;br /&gt;         20         5     10875&lt;br /&gt;         30         6      9400&lt;br /&gt;  SQL&gt; select deptno,count(*),sum(sal) from scott.emp having count(*)&gt;=5 group by deptno ;&lt;br /&gt;  &lt;br /&gt;     DEPTNO  COUNT(*)  SUM(SAL)&lt;br /&gt;  --------- --------- ---------&lt;br /&gt;         20         5     10875&lt;br /&gt;         30         6      9400&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  67.ORDER BY&lt;br /&gt;  用于对查询到的结果进行排序输出&lt;br /&gt;  SQL&gt; select deptno,ename,sal from scott.emp order by deptno,sal desc;&lt;br /&gt;  &lt;br /&gt;     DEPTNO ENAME            SAL&lt;br /&gt;  --------- ---------- ---------&lt;br /&gt;         10 KING            5000&lt;br /&gt;         10 CLARK           2450&lt;br /&gt;         10 MILLER          1300&lt;br /&gt;         20 SCOTT           3000&lt;br /&gt;         20 FORD            3000&lt;br /&gt;         20 JONES           2975&lt;br /&gt;         20 ADAMS           1100&lt;br /&gt;         20 SMITH            800&lt;br /&gt;         30 BLAKE           2850&lt;br /&gt;         30 ALLEN           1600&lt;br /&gt;         30 TURNER          1500&lt;br /&gt;         30 WARD            1250&lt;br /&gt;         30 MARTIN          1250&lt;br /&gt;         30 JAMES            950&lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt;  &lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115770295429902098?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115770295429902098/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115770295429902098' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770295429902098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115770295429902098'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oracle_08.html' title='ORACLE函数大全'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115769324246198917</id><published>2006-09-07T22:24:00.000-07:00</published><updated>2006-09-07T22:34:49.523-07:00</updated><title type='text'>关于firefox对style.display属性的解释问题</title><content type='html'>&lt;blogitemtitle&gt;最近在制作网站的过程中出现了一个问题，就是firefox下对遇style.display执行结果和ie不一样，真实郁闷，多方查找资料，终于发现了问题，代码如下：&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;display&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;function show(){&lt;br /&gt;var msg=document.getElementById("showmsg");&lt;br /&gt;if(msg.style.display=="none"){&lt;br /&gt;msg.style.display="block";&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;msg.style.display="none";&lt;br /&gt;}&lt;br /&gt;//--&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;table width="100%" &amp;gt;&lt;br /&gt;&amp;lt;tr width="100%"&amp;gt;&lt;br /&gt;&amp;lt;td width="100%"&amp;gt;&lt;br /&gt;&amp;lt;font style="cursor:hand;" onclick="show()"&amp;gt;&lt;br /&gt;ddddddddddddddddd&lt;br /&gt;&amp;lt;/font&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr id="showmsg" style="display:none;"&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;dsffdafa&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;电风扇扩大发洒家艰苦&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;上面的HTML页面在IE和Firefox中的执行结果不同：&lt;br /&gt;1)"display:none;"后面的内容站用原来块的内容空间//但Firefox好象把这个和"visibility:hidden;"一样处理的&lt;br /&gt;2)"display:block;"将隐藏的内容显示出来//Firefox好象是为其重新开辟内容显示空间&lt;br /&gt;&lt;br /&gt;最后正确有效的处理结果&lt;br /&gt;发现个问题：&lt;br /&gt;当将javascript脚本改下就可以了：&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;function show(){&lt;br /&gt;var msg=document.getElementById("showmsg");&lt;br /&gt; if(msg.style.display=="none")&lt;br /&gt;{ msg.style.display="";//即将此句有原来的msg.style.display="block";改为：msg.style.display=""; }&lt;br /&gt;else&lt;br /&gt; msg.style.display="none"; } //--&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;呵呵~，搞定！&lt;br /&gt;&lt;blogitemtitle&gt;   &lt;blogitemurl&gt;&lt;br /&gt;&lt;a href="%3C$BlogItemURL$"&gt;"&gt;&lt;/a&gt;&lt;/blogitemurl&gt;&lt;a href="%3C$BlogItemURL$"&gt;&lt;$BlogItemTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blogitemtitle&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115769324246198917?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115769324246198917/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115769324246198917' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115769324246198917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115769324246198917'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/firefoxstyledisplay.html' title='关于firefox对style.display属性的解释问题'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115768621078425984</id><published>2006-09-07T20:30:00.000-07:00</published><updated>2006-09-07T20:39:26.630-07:00</updated><title type='text'>Windows2000下整合Mysql4.0.13与Tomcat4.1.24搭建Jsp环境</title><content type='html'>&lt;p&gt;原 由：在资料浩瀚的互联网中，却找不到一份最新的Mysql4.0.13与Tomcat4.1.24的整合配置文档。在自己工作之余，总结了自己搭建JSP 环境的实际经验并参照以前版本Mysql、Tomcat相关配置文章，写了这篇配置文档。希望能给和我一样喜欢JAVA的广大初学者以作参考，以期少走些 弯路；水平有限加之时间仓促，欢迎斧正！&lt;/p&gt;&lt;p&gt;目录：&lt;/p&gt;&lt;p&gt;一、软件准备&lt;/p&gt;&lt;p&gt;二、软件安装&lt;/p&gt;&lt;p&gt;三、首次配置及测试&lt;/p&gt;&lt;p&gt;四、整合配置&lt;/p&gt;&lt;p&gt;五、全线测试&lt;/p&gt;&lt;p&gt;六、补充说明&lt;/p&gt;&lt;p&gt;七、感谢&lt;/p&gt;&lt;p&gt;八、说明&lt;/p&gt;&lt;p&gt;&lt;br /&gt;具体实现步骤：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;一、软件准备：&lt;/p&gt;&lt;p&gt;假设你有一台能正常运行win2000 的硬软软件环境。&lt;/p&gt;&lt;p&gt;1.J2sdk1.4.1 : 到&lt;a href="http://java.sun.com/j2se/1.4.1/download.html" target="_blank"&gt;http://java.sun.com/j2se/1.4.1/download.html&lt;/a&gt;下载；&lt;/p&gt;&lt;p&gt;2.Mysql4.0.13: 到&lt;a href="http://www.mysql.com/" target="_blank"&gt;http://www.mysql.com&lt;/a&gt; 下载; &lt;/p&gt;&lt;p&gt;3.Tomcat4.1.24：到 &lt;a href="http://jakarta.apache.org/" target="_blank"&gt;http://jakarta.apache.org/&lt;/a&gt; 下载;&lt;/p&gt;&lt;p&gt;4.mm.mysql-2.0.4-bin.jar:  到&lt;a href="http://mysql.ihostunit.com/Downloads/Contrib/mm.mysql-2.0.4-bin.jar" target="_blank"&gt; http://mysql.ihostunit.com/Downloads/Contrib/mm.mysql-2.0.4-bin.jar&lt;/a&gt; 下载;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;二、软件安装：&lt;/p&gt;&lt;p&gt;1.安装J2sdk：&lt;/p&gt;&lt;p&gt;按照安装向导进行安装（一般安装到C:\j2sdk1.4.1下，方便操作）；&lt;/p&gt;&lt;p&gt;2.安装Mysql:&lt;/p&gt;&lt;p&gt;按照安装向导进行安装（选择安装目录为C:\，方便操作；安装成功后其路径为：C:\mysql）； &lt;/p&gt;&lt;p&gt;3.安装Tomcat:&lt;/p&gt;&lt;p&gt;按照安装向导进行安装（更改安装目录为C:\Tomcat4。1，其间会要你输入Admin（系统管理员）的口令）；&lt;/p&gt;&lt;p&gt;4.放置Mysql的Jdbc驱动：&lt;/p&gt;&lt;p&gt;将mm.mysql-2.0.4-bin.jar文件放到C:\j2sdk1.4.0-rc\lib下（其实放到哪都应该无所谓，主要是在系统变量里指一下就可以了，但有不少人说放到这里好，所以我就放这里了）；&lt;/p&gt;&lt;p&gt;&lt;br /&gt;三、首次配置及测试：&lt;/p&gt;&lt;p&gt;对以上安装的软件环境进行首次配置，并测试其环境：&lt;/p&gt;&lt;p&gt;(1)配置--环境变量：&lt;/p&gt;&lt;p&gt;1.新建系统变量JAVA_HOME，其值为：C:\j2sdk1.4.1 （若你没按以上路径安装请更改为您的安装路径）；&lt;/p&gt;&lt;p&gt;2.新建系统变量TOMCAT_HOME，其值为：C:\Tomcat4 （若你没按以上路径安装请更改为您的安装路径）；&lt;/p&gt;&lt;p&gt;3.系统变量CLASSPATH，添加，其值为：C:\Tomcat  4.1\common\classes;C:\Tomcat 4.1\common\lib&lt;/p&gt;&lt;p&gt;4.系统变量CLASSPATH，添加，其值为：C:\j2sdk1.4.0-rc\lib\mm.mysql-2.0.4-bin;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;(2)测试默认服务：&lt;/p&gt;&lt;p&gt;1.请先启动Tomcat4.1(在开始-程序中找到Apache Tomcat4.1运行Start Tomcat)服务：&lt;/p&gt;&lt;p&gt;打开浏览器，在地址栏中输入： &lt;a href="http://localhost:8080/" target="_blank"&gt;http://localhost:8080&lt;/a&gt; 检验：此时能在浏览器中看到Tomcat的欢迎界面.说明Tomcat工作正常（注意，Tomcat默认端口为8080，若有其它程序占用，请更改）；&lt;/p&gt;&lt;p&gt;2.启动Mysql服务（Mysql服务默认随操作系统启动，并有winmysqladmin.exe最小化在系统托盘上）：&lt;/p&gt;&lt;p&gt;进入CMD，到C:\mysql\bin目录下，执行mysql，回车，正常的话输出一些欢迎信息，说明Mysql工作正常； &lt;/p&gt;&lt;p&gt;&lt;br /&gt;四、整合配置：&lt;/p&gt;&lt;p&gt;对Mysql4与Tomcat4做相应的配置，让其共同为你工作：&lt;/p&gt;&lt;p&gt;1.将mm.mysql-2.0.4-bin.jar拷贝到Tomcat的common/lib目录下；&lt;/p&gt;&lt;p&gt;2.测试是否连接正常；将如下代码保存成test.jsp至C:\Tomcat 4.1\webapps\ROOT目录下：&lt;/p&gt;&lt;p&gt;;%@ page contentType="text/html;charset=gb2312" %; &lt;br /&gt;;%&lt;br /&gt;java.sql.Connection conn;&lt;br /&gt;java.lang.String strConn;&lt;br /&gt;Class.forName("org.gjt.mm.mysql.Driver").newInstance();&lt;br /&gt;conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root",""); &lt;br /&gt;%;&lt;br /&gt;;%--这里连接的是Mysql4默认自带的test库，用户与密码用的是默认的root与空--%;&lt;/p&gt;&lt;p&gt;3、在浏览器的地址中输入&lt;a href="http://localhost:8080/test.jsp" target="_blank"&gt;http://localhost:8080/test.jsp&lt;/a&gt;如果运行以后，出现空白页面，即表示Mysql4与Tomcat4整合成功；&lt;/p&gt;&lt;p&gt;&lt;br /&gt;五、全线测试： &lt;/p&gt;&lt;p&gt;1.启动Tomcat4.1；&lt;/p&gt;&lt;p&gt;2.建立数据库及表;&lt;/p&gt;&lt;p&gt;首先在mysql里面建立一个表，并且插如几条数据。sql代码如下：&lt;br /&gt;create database test;--运行&lt;br /&gt;use test;--运行&lt;br /&gt;create talbe admin (id int(4) auto_increment primary key,name varchar(20));--运行&lt;br /&gt;INSERT INTO user(name) VALUES('test');--运行&lt;br /&gt;ok,你已经建立了数据库test，建立了表user，并且插入了一条记录。&lt;/p&gt;&lt;p&gt;3、显示数据库中的记录;&lt;/p&gt;&lt;p&gt;将如下代码保存成test2.jsp至C:\Tomcat 4.1\webapps\ROOT目录下：&lt;br /&gt;;%@ page contentType="text/html;charset=GBK" %;&lt;br /&gt;;%@ page language="java" import=" java.sql.*"%;&lt;br /&gt;;%&lt;br /&gt;Connection conn = null;&lt;br /&gt;Class.forName("org.gjt.mm.mysql.Driver").newInstance();&lt;br /&gt;conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");&lt;br /&gt;if(conn==null){&lt;br /&gt;System.out.println("get Conn Error");&lt;br /&gt;}&lt;br /&gt;Statement stmt=conn.createStatement();&lt;br /&gt;ResultSet RS_result=null;&lt;br /&gt;%;&lt;br /&gt;;html;&lt;br /&gt;;head;&lt;br /&gt;;title;测试;/title;;/head;&lt;br /&gt;;body;&lt;br /&gt;;%&lt;br /&gt;RS_result= stmt.executeQuery("select * from user");&lt;br /&gt;String Name;&lt;br /&gt;while(RS_result.next())&lt;br /&gt;{&lt;br /&gt;Name=RS_result.getString("name");&lt;br /&gt;%;&lt;br /&gt;;%=Name%;&lt;br /&gt;;%&lt;br /&gt;}&lt;br /&gt;RS_result.close();&lt;br /&gt;stmt.close();&lt;br /&gt;conn.close ();&lt;br /&gt;%;&lt;br /&gt;;/body;&lt;br /&gt;;/html;&lt;/p&gt;&lt;p&gt;4.打开你的浏览器，在地址栏中输入&lt;a href="http://localhost:8080/test.jsp" target="_blank"&gt;http://localhost:8080/test.jsp&lt;/a&gt;如果运行以后，页面上显示test，即表示读取数据库成功；&lt;/p&gt;&lt;p&gt;&lt;br /&gt;六、补充说明：&lt;/p&gt;&lt;p&gt;1.假设已有一项目在E:\test\oa目录下（包含index.jsp及其它jsp文件和bean，如WEB-INF\classes\下的servlet、javabean）；&lt;br /&gt;设置Tomcat以支持你的项目，打开C:\Tomcat4.1\conf\server.xml文件，在";/Host;"之前,";/Context;"之后添加&lt;br /&gt;;Context path="/oa" debug="0" docBase="E:\test\oa" reloadable="true"/;并保存。&lt;br /&gt;说明：Context (表示一个web应用程序): docBase定义应用程序的路径；path 表示此web应用程序的url的前缀，这样请求的url&lt;br /&gt;为&lt;a href="http://localhost:8080/oa" target="_blank"&gt;http://localhost:8080/oa&lt;/a&gt;；reloadable 这个属性非常重要，如果为true，则tomcat会自动检测应用程序的/WEB-INF/lib&lt;br /&gt;和/WEB-INF/classes目录的变化，自动装载修改或新的bean及servlet，我们可以在不重起tomcat的情况下看到bean带给jsp的变化;  &lt;/p&gt;&lt;p&gt;2.启动Tomcat4.1，在浏览器的地址中输入&lt;a href="http://localhost:8080/oa" target="_blank"&gt;http://localhost:8080/oa&lt;/a&gt;，如jsp及bean等没有错误，一般会将你的index.jsp/index.html&lt;br /&gt;文件的内容给执行并显示。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;七、感谢：&lt;/p&gt;&lt;p&gt;1.感谢Apache、Mysql组织，为大家提供了如此之好的免费的应用服务器与数据库； &lt;/p&gt;&lt;p&gt;2.感谢以前写过Tomcat3.x/Tomcat4.*配置文档的朋友们，为我今天写这篇文档作了参考；&lt;/p&gt;&lt;p&gt;&lt;br /&gt;八、说明：&lt;/p&gt;&lt;p&gt;1.若您觉得满意，想转载或收藏这篇文章，我非常感谢，但请您注明作者hoxisoft（&lt;a href="mailto:hoxisoft@263.net"&gt;hoxisoft@263.net&lt;/a&gt;）&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115768621078425984?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115768621078425984/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115768621078425984' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115768621078425984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115768621078425984'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/windows2000mysql4013tomcat4124jsp.html' title='Windows2000下整合Mysql4.0.13与Tomcat4.1.24搭建Jsp环境'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115759857180725161</id><published>2006-09-06T20:09:00.000-07:00</published><updated>2006-09-06T20:09:31.810-07:00</updated><title type='text'>使用Java编写oracle存储过程</title><content type='html'>    bromon原创&amp;nbsp;请尊重版权&lt;br&gt;     &lt;br&gt;    &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;通常我们都使用ps/sql为oracle编写存储过程，从oracle&amp;nbsp;8开始我们可以有另一种选择： Java。8.0开始，oracle自带一个jvm，内置对java的支持，任何java能做的事情你都可以放到oracle里面来做，你甚至可以在里面 操作db2。这让oracle具备了极其巨大的扩展能力，只要你愿意，完全可以开发一个trigger，让它在适当的时候给管理员的msn发送一条即时消 息。&lt;br&gt;     &lt;br&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;好消息说完了，现在是坏消息：由于ps/sql是过程化的语言，它基本上不具备多 态的概念，供oracle使用的java方法必须申明为static，所以在oracle中你无法使用java的动态特性，比如接口、反射等。不过这并不 妨碍你用java做爱做的事。&lt;br&gt;     &lt;br&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我们以一个简单的hello&amp;nbsp;world为例，我想任何一个有经验的java程序员都能够通过这个例子，派生出其他希奇古怪的应用，有好的创意记得要与我共享，我的msn是bromon@&lt;a href="http://gmail.com"&gt;gmail.com&lt;/a&gt;&lt;br&gt;     &lt;br&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先是创建一个java类，你可以用jbuilder/eclipse来编写，也可以直接在oracle的控制台里面创建。前者不多说，看看后一种方式。&lt;br&gt;     &lt;br&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启动sql&amp;nbsp;plus，执行如下命令：&lt;br&gt;     &lt;br&gt;     &lt;div&gt; &lt;ol&gt;&lt;li&gt; &lt;br&gt;   &lt;/li&gt;&lt;li&gt;create&amp;nbsp;or&amp;nbsp;replace&amp;nbsp;and&amp;nbsp;compile&amp;nbsp;java&amp;nbsp;source&amp;nbsp;named&amp;nbsp;&lt;font color="#ff33ff"&gt;&amp;quot;hello_sp&amp;quot;&lt;/font&gt;   &amp;nbsp;as &lt;/li&gt;&lt;li&gt; &lt;i&gt; &lt;font color="#339900"&gt;/**&lt;/font&gt;   &lt;/i&gt;    &lt;/li&gt;&lt;li&gt; &lt;i&gt; &lt;font color="#339900"&gt;&amp;nbsp;*创建oracle存储过程的java类&lt;/font&gt;   &lt;/i&gt;    &lt;/li&gt;&lt;li&gt; &lt;i&gt; &lt;font color="#339900"&gt;&amp;nbsp;*@author&amp;nbsp;bromon&lt;/font&gt;   &lt;/i&gt;    &lt;/li&gt;&lt;li&gt; &lt;i&gt; &lt;font color="#339900"&gt;**/&lt;/font&gt;   &lt;/i&gt;    &lt;/li&gt;&lt;li&gt; &lt;b&gt; &lt;font color="#0000ff"&gt;package&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;org.bromon.oracle; &lt;/li&gt;&lt;li&gt; &lt;b&gt; &lt;font color="#0000ff"&gt;public&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;Hello &lt;/li&gt;&lt;li&gt;{ &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;public&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;b&gt; &lt;a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html"&gt; &lt;font&gt; &lt;u&gt;String&lt;/u&gt;   &lt;/font&gt;   &lt;/a&gt;   &lt;/b&gt;   &amp;nbsp;say(&lt;b&gt; &lt;a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html"&gt; &lt;font&gt; &lt;u&gt;String&lt;/u&gt;   &lt;/font&gt;   &lt;/a&gt;   &lt;/b&gt;   &amp;nbsp;name) &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;{ &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;return&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;font color="#ff33ff"&gt;&amp;quot;你好,&amp;quot;&lt;/font&gt;   +name; &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;} &lt;/li&gt;&lt;li&gt;} &lt;/li&gt;&lt;/ol&gt;   &lt;/div&gt;   &lt;br&gt;    Java以创建。&lt;br&gt;     &lt;br&gt;    然后在oracle中把这个类导入成为一个函数，执行命令：&lt;br&gt;     &lt;div&gt; &lt;ol&gt;&lt;li&gt; &lt;br&gt;   &lt;/li&gt;&lt;li&gt;create&amp;nbsp;or&amp;nbsp;replace&amp;nbsp;function&amp;nbsp;hello_sp(name&amp;nbsp;varchar2)&amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;return&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;varchar2 &lt;/li&gt;&lt;li&gt;as&amp;nbsp;language&amp;nbsp;java&amp;nbsp;name&amp;nbsp; &lt;/li&gt;&lt;li&gt;'org.bromon.oracle.Hello.say(java.lang.&lt;b&gt; &lt;a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html"&gt; &lt;font&gt; &lt;u&gt;String&lt;/u&gt;   &lt;/font&gt;   &lt;/a&gt;   &lt;/b&gt;   )&amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;return&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;java.lang.&lt;b&gt; &lt;a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html"&gt; &lt;font&gt; &lt;u&gt;String&lt;/u&gt;   &lt;/font&gt;   &lt;/a&gt;   &lt;/b&gt;   '; &lt;/li&gt;&lt;/ol&gt;   &lt;/div&gt;   &lt;br&gt;     &lt;br&gt;    函数已创建&lt;br&gt;     &lt;br&gt;    现在可以调用该函数，执行：&lt;br&gt;     &lt;div&gt; &lt;ol&gt;&lt;li&gt;select&amp;nbsp;hello('bromon')&amp;nbsp;from&amp;nbsp;dual; &lt;/li&gt;&lt;/ol&gt;   &lt;/div&gt;   &lt;br&gt;     &lt;br&gt;    返回结果：你好,bromon&lt;br&gt;     &lt;br&gt;    有一个需要注意的问题是，假如我们的java方法是没有参数的，比如：&lt;br&gt;     &lt;div&gt; &lt;ol&gt;&lt;li&gt; &lt;br&gt;   &lt;/li&gt;&lt;li&gt; &lt;b&gt; &lt;font color="#0000ff"&gt;public&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;b&gt; &lt;a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html"&gt; &lt;font&gt; &lt;u&gt;String&lt;/u&gt;   &lt;/font&gt;   &lt;/a&gt;   &lt;/b&gt;   &amp;nbsp;say() &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;{ &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; &lt;font color="#0000ff"&gt;return&lt;/font&gt;   &lt;/b&gt;   &amp;nbsp;&lt;font color="#ff33ff"&gt;&amp;quot;你好";&lt;/font&gt;    &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;} &lt;/li&gt;&lt;/ol&gt;   &lt;/div&gt;   &lt;br&gt;    那么在创建函数的时候，函数名不应该有扩号：hello_sp&lt;br&gt;    否则会报告函数有编译错误。&lt;br&gt;     &lt;br&gt;    如果你的java类是在IDE里面编写的，那么只需要在oracle中加载编译过的class文件即可，方法是：&lt;br&gt;     &lt;br&gt;    启 动enterprise&amp;nbsp;manage&amp;nbsp;console，在"方案"下找到"源类型 "，右击"java类"，选择"加载java"，选择对应的class文件即可。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115759857180725161?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115759857180725161/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115759857180725161' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115759857180725161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115759857180725161'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/javaoracle.html' title='使用Java编写oracle存储过程'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115759777919173828</id><published>2006-09-06T19:56:00.000-07:00</published><updated>2006-09-06T19:56:19.196-07:00</updated><title type='text'>Oracle的换行符</title><content type='html'>&lt;div&gt;&lt;li&gt;在SQL中，表示字符串得引号强烈建议使用单引号（'）。虽然MySQL也可以使用双引号（&amp;quot;），但是为了和SQL Server和Oracle统一，建议都使用单引号。如果在字符串中也有单引号出现的话，在SQL中需要将其替换为两个单引号（''），DBMS会将其解 释为一个单引号的。&lt;br&gt; &lt;/li&gt;&lt;li&gt;关于SQL的换行符和字符串连接符，在MySQL、SQL Server和Oracle中均有不同，下面以列表显示。  &lt;table width="100%"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td align="center" width="25%"&gt;&amp;nbsp;&lt;/td&gt; &lt;td align="center" width="25%"&gt;MySQL&lt;/td&gt; &lt;td align="center" width="25%"&gt;SQL Server&lt;/td&gt; &lt;td align="center" width="25%"&gt;Oracle&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="center" width="25%"&gt;换行符&lt;/td&gt; &lt;td align="center" width="25%"&gt;\n或\r\n或CHAR(10)&lt;/td&gt; &lt;td align="center" width="25%"&gt;CHAR(13)&lt;/td&gt; &lt;td align="center" width="25%"&gt;CHR(10)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="center" width="25%"&gt;字符串连接符&lt;/td&gt; &lt;td align="center" width="25%"&gt;CONCAT()&lt;/td&gt; &lt;td align="center" width="25%"&gt;+&lt;/td&gt; &lt;td align="center" width="25%"&gt;||或CONCAT()&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/li&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115759777919173828?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115759777919173828/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115759777919173828' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115759777919173828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115759777919173828'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/oracle.html' title='Oracle的换行符'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115759674733272602</id><published>2006-09-06T19:38:00.000-07:00</published><updated>2006-09-06T19:59:00.380-07:00</updated><title type='text'>游标使用大全</title><content type='html'>游标使用大全&lt;br /&gt;查询&lt;br /&gt;&lt;br /&gt;    SELECT语句用于从数据库中查询数据，当在PL/SQL中使用SELECT语句时，要与INTO子句一起使用，查询的返回值被赋予INTO子句中的变量，变量的声明是在DELCARE中。SELECT             INTO语法如下：&lt;br /&gt;&lt;br /&gt;     SELECT [DISTICT|ALL]{*|column[,column,...]}&lt;br /&gt;&lt;br /&gt;     INTO (variable[,variable,...] |record)&lt;br /&gt;&lt;br /&gt;     FROM {table|(sub-query)}[alias]&lt;br /&gt;&lt;br /&gt;     WHERE............&lt;br /&gt;&lt;br /&gt;    PL/SQL中SELECT语句只返回一行数据。如果超过一行数据，那么就要使用显式游标（对游标的讨论我们将在后面进行），INTO子句中要有与SELECT子句中相同列数量的变量。INTO子句中也可以是记录变量。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;%TYPE属性&lt;br /&gt;&lt;br /&gt;     在PL/SQL中可以将变量和常量声明为内建或用户定义的数据类型，以引用一个列名，同时继承他的数据类型和大小。这种动态赋值方法是非常有用的，比如变量引用的列的数据类型和大小改变了，如果使用了%TYPE,那么用户就不必修改代码，否则就必须修改代码。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;  v_empno SCOTT.EMP.EMPNO%TYPE;&lt;br /&gt;&lt;br /&gt;  v_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;  　不但列名可以使用%TYPE,而且变量、游标、记录，或声明的常量都可以使用%TYPE。这对于定义相同数据类型的变量非常有用。&lt;br /&gt;&lt;br /&gt;    DELCARE&lt;br /&gt;&lt;br /&gt;    V_A NUMBER(5):=10;&lt;br /&gt;&lt;br /&gt;    V_B V_A%TYPE:=15;&lt;br /&gt;&lt;br /&gt;    V_C V_A%TYPE;&lt;br /&gt;&lt;br /&gt;    BEGIN&lt;br /&gt;&lt;br /&gt;      DBMS_OUTPUT.PUT_LINE&lt;br /&gt;&lt;br /&gt;      ('V_A='||V_A||'V_B='||V_B||'V_C='||V_C);&lt;br /&gt;&lt;br /&gt;    END&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;    SQL&gt;/&lt;br /&gt;&lt;br /&gt;    V_A=10 V_B=15 V_C=&lt;br /&gt;&lt;br /&gt;     PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;     SQL&gt;&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;其他DML语句&lt;br /&gt;&lt;br /&gt;    其它操作数据的DML语句是:INSERT、UPDATE、DELETE和LOCK TABLE,这些语句在PL/SQL中的语法与在SQL中的语法相同。我们在前面已经讨论过DML语句的使用这里就不再重复了。在DML语句中可以使用任何在DECLARE部分声明的变量，如果是嵌套块，那么要注意变量的作用范围。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;  CREATE OR REPLACE PROCEDURE FIRE_EMPLOYEE (pempno in number)&lt;br /&gt;&lt;br /&gt;  　AS&lt;br /&gt;&lt;br /&gt;    v_ename EMP.ENAME%TYPE;&lt;br /&gt;&lt;br /&gt;    BEGIN&lt;br /&gt;&lt;br /&gt;    　SELECT ename INTO v_ename&lt;br /&gt;&lt;br /&gt;      FROM emp&lt;br /&gt;&lt;br /&gt;      WHERE empno=p_empno;&lt;br /&gt;&lt;br /&gt;      INSERT INTO FORMER_EMP(EMPNO,ENAME)&lt;br /&gt;&lt;br /&gt;      VALUES (p_empno,v_ename);&lt;br /&gt;&lt;br /&gt;      DELETE FROM emp&lt;br /&gt;&lt;br /&gt;      WHERE empno=p_empno;&lt;br /&gt;&lt;br /&gt;      UPDATE former_emp&lt;br /&gt;&lt;br /&gt;      SET date_deleted=SYSDATE&lt;br /&gt;&lt;br /&gt;      WHERE empno=p_empno;&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;    EXCEPTION&lt;br /&gt;&lt;br /&gt;       WHEN NO_DATA_FOUND THEN&lt;br /&gt;&lt;br /&gt;       DBMS_OUTPUT.PUT_LINE('Employee Number Not Found!');&lt;br /&gt;&lt;br /&gt;    END&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;DML语句的结果&lt;br /&gt;&lt;br /&gt;    当执行一条DML语句后，DML语句的结果保存在四个游标属性中，这些属性用于控制程序流程或者了解程序的状态。当运行DML语句时，PL/SQL打开一个内建游标并处理结果，游标是维护查询结果的内存中的一个区域，游标在运行DML语句时打开，完成后关闭。隐式游标只使用SQL%FOUND,SQL% NOTFOUND,SQL%ROWCOUNT三个属性.SQL%FOUND,SQL%NOTFOUND是布尔值，SQL%ROWCOUNT是整数值。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;SQL%FOUND和SQL%NOTFOUND&lt;br /&gt;&lt;br /&gt;    在执行任何DML语句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在执行DML语句后，SQL%FOUND的属性值将是：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;. TRUE :INSERT&lt;br /&gt;&lt;br /&gt;. TRUE :DELETE和UPDATE，至少有一行被DELETE或UPDATE.&lt;br /&gt;&lt;br /&gt;. TRUE :SELECT INTO至少返回一行&lt;br /&gt;&lt;br /&gt;当SQL%FOUND为TRUE时,SQL%NOTFOUND为FALSE。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;SQL%ROWCOUNT&lt;br /&gt;&lt;br /&gt;   在执行任何DML语句之前，SQL%ROWCOUNT的值都是NULL,对于SELECT             INTO语句，如果执行成功，SQL%ROWCOUNT的值为1,如果没有成功，SQL%ROWCOUNT的值为0，同时产生一个异常 NO_DATA_FOUND.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;SQL%ISOPEN&lt;br /&gt;&lt;br /&gt;  SQL%ISOPEN是一个布尔值，如果游标打开，则为TRUE, 如果游标关闭，则为FALSE.对于隐式游标而言SQL%ISOPEN总是FALSE，这是因为隐式游标在DML语句执行时打开，结束时就立即关闭。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;事务控制语句&lt;br /&gt;&lt;br /&gt;    事务是一个工作的逻辑单元可以包括一个或多个DML语句，事物控制帮助用户保证数据的一致性。如果事务控制逻辑单元中的任何一个DML语句失败，那么整个事务都将回滚，在PL/SQL中用户可以明确地使用COMMIT、ROLLBACK、SAVEPOINT以及SET TRANSACTION语句。&lt;br /&gt;&lt;br /&gt;     COMMIT语句终止事务，永久保存数据库的变化，同时释放所有LOCK,ROLLBACK终止现行事务释放所有LOCK，但不保存数据库的任何变化, SAVEPOINT用于设置中间点，当事务调用过多的数据库操作时，中间点是非常有用的，SET TRANSACTION用于设置事务属性，比如read-write和隔离级等。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;显式游标&lt;br /&gt;&lt;br /&gt;    当查询返回结果超过一行时，就需要一个显式游标，此时用户不能使用select into语句。PL/SQL管理隐式游标，当查询开始时隐式游标打开，查询结束时隐式游标自动关闭。显式游标在PL/SQL块的声明部分声明，在执行部分或异常处理部分打开，取数据,关闭。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;使用游标&lt;br /&gt;&lt;br /&gt;    这里要做一个声明，我们所说的游标通常是指显式游标，因此从现在起没有特别指明的情况，我们所说的游标都是指显式游标。要在程序中使用游标，必须首先声明游标。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;声明游标&lt;br /&gt;&lt;br /&gt;语法：&lt;br /&gt;&lt;br /&gt;    CURSOR cursor_name IS select_statement;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;在PL/SQL中游标名是一个未声明变量，不能给游标名赋值或用于表达式中。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;    DELCARE&lt;br /&gt;&lt;br /&gt;    CURSOR C_EMP IS SELECT empno,ename,salary&lt;br /&gt;&lt;br /&gt;    FROM emp&lt;br /&gt;&lt;br /&gt;    WHERE salary&gt;2000&lt;br /&gt;&lt;br /&gt;    ORDER BY ename;&lt;br /&gt;&lt;br /&gt;    ........&lt;br /&gt;&lt;br /&gt;    BEGIN&lt;br /&gt;&lt;br /&gt;    在游标定义中SELECT语句中不一定非要表可以是视图，也可以从多个表或视图中选择的列，甚至可以使用*来选择所有的列 。&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;打开游标&lt;br /&gt;&lt;br /&gt;使用游标中的值之前应该首先打开游标，打开游标初始化查询处理。打开游标的语法是：&lt;br /&gt;&lt;br /&gt;    OPEN cursor_name&lt;br /&gt;&lt;br /&gt;       cursor_name是在声明部分定义的游标名。&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;     OPEN C_EMP;&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;关闭游标&lt;br /&gt;&lt;br /&gt;语法：&lt;br /&gt;&lt;br /&gt;     CLOSE cursor_name&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;     CLOSE C_EMP;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;从游标提取数据&lt;br /&gt;&lt;br /&gt;    从游标得到一行数据使用FETCH命令。每一次提取数据后，游标都指向结果集的下一行。语法如下：&lt;br /&gt;&lt;br /&gt;     FETCH cursor_name INTO variable[,variable,...]&lt;br /&gt;&lt;br /&gt;     对于SELECT定义的游标的每一列，FETCH变量列表都应该有一个变量与之相对应，变量的类型也要相同。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;   SET SERVERIUTPUT ON&lt;br /&gt;&lt;br /&gt;   DECLARE&lt;br /&gt;&lt;br /&gt;     v_ename EMP.ENAME%TYPE;&lt;br /&gt;&lt;br /&gt;     v_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;     CURSOR c_emp IS SELECT ename,salary FROM emp;&lt;br /&gt;&lt;br /&gt;     BEGIN&lt;br /&gt;&lt;br /&gt;       OPEN c_emp;&lt;br /&gt;&lt;br /&gt;          FETCH c_emp INTO v_ename,v_salary;&lt;br /&gt;&lt;br /&gt;            DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename ||'is'|| v_salary);&lt;br /&gt;&lt;br /&gt;          FETCH c_emp INTO v_ename,v_salary;&lt;br /&gt;&lt;br /&gt;            DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename ||'is'|| v_salary);&lt;br /&gt;&lt;br /&gt;          FETCH c_emp INTO v_ename,v_salary;&lt;br /&gt;&lt;br /&gt;            DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename ||'is'|| v_salary);&lt;br /&gt;&lt;br /&gt;       CLOSE c_emp;&lt;br /&gt;&lt;br /&gt;     END&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    这段代码无疑是非常麻烦的，如果有多行返回结果，可以使用循环并用游标属性为结束循环的条件，以这种方式提取数据，程序的可读性和简洁性都大为提高，下面我们使用循环重新写上面的程序：&lt;br /&gt;&lt;br /&gt;SET SERVERIUTPUT ON&lt;br /&gt;&lt;br /&gt;DECLARE&lt;br /&gt;&lt;br /&gt;v_ename EMP.ENAME%TYPE;&lt;br /&gt;&lt;br /&gt;v_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;CURSOR c_emp IS SELECT ename,salary FROM emp; &lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;  OPEN c_emp;&lt;br /&gt;&lt;br /&gt;    LOOP&lt;br /&gt;&lt;br /&gt;      FETCH c_emp INTO v_ename,v_salary;&lt;br /&gt;&lt;br /&gt;      EXIT WHEN c_emp%NOTFOUND;&lt;br /&gt;&lt;br /&gt;      DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename ||'is'|| v_salary);&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;记录变量&lt;br /&gt;&lt;br /&gt;    定义一个记录变量使用TYPE命令和%ROWTYPE，关于%ROWsTYPE的更多信息请参阅相关资料。&lt;br /&gt;&lt;br /&gt;    记录变量用于从游标中提取数据行，当游标选择很多列的时候，那么使用记录比为每列声明一个变量要方便得多。&lt;br /&gt;&lt;br /&gt;    当在表上使用%ROWTYPE并将从游标中取出的值放入记录中时，如果要选择表中所有列，那么在SELECT子句中使用*比将所有列名列出来要安全得多。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;SET SERVERIUTPUT ON&lt;br /&gt;&lt;br /&gt;DECLARE&lt;br /&gt;&lt;br /&gt;R_emp EMP%ROWTYPE;&lt;br /&gt;&lt;br /&gt;CURSOR c_emp IS SELECT * FROM emp;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;  OPEN c_emp;&lt;br /&gt;&lt;br /&gt;   LOOP&lt;br /&gt;&lt;br /&gt;     FETCH c_emp INTO r_emp;&lt;br /&gt;&lt;br /&gt;     EXIT WHEN c_emp%NOTFOUND;&lt;br /&gt;&lt;br /&gt;     DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);&lt;br /&gt;&lt;br /&gt;   END LOOP;&lt;br /&gt;&lt;br /&gt;  CLOSE c_emp;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;%ROWTYPE也可以用游标名来定义，这样的话就必须要首先声明游标：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;SET SERVERIUTPUT ON&lt;br /&gt;&lt;br /&gt;DECLARE&lt;br /&gt;&lt;br /&gt;CURSOR c_emp IS SELECT ename,salary FROM emp;&lt;br /&gt;&lt;br /&gt;R_emp c_emp%ROWTYPE;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt; OPEN c_emp;&lt;br /&gt;&lt;br /&gt;  LOOP&lt;br /&gt;&lt;br /&gt;    FETCH c_emp INTO r_emp;&lt;br /&gt;&lt;br /&gt;    EXIT WHEN c_emp%NOTFOUND;&lt;br /&gt;&lt;br /&gt;    DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);&lt;br /&gt;&lt;br /&gt;  END LOOP;&lt;br /&gt;&lt;br /&gt; CLOSE c_emp;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;带参数的游标&lt;br /&gt;&lt;br /&gt;    与存储过程和函数相似，可以将参数传递给游标并在查询中使用。这对于处理在某种条件下打开游标的情况非常有用。它的语法如下：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;定义参数的语法如下：&lt;br /&gt;&lt;br /&gt;   Parameter_name [IN] data_type[{:=|DEFAULT} value]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;　 与存储过程不同的是，游标只能接受传递的值，而不能返回值。参数只定义数据类型，没有大小。&lt;br /&gt;&lt;br /&gt;   另外可以给参数设定一个缺省值，当没有参数值传递给游标时，就使用缺省值。游标中定义的参数只是一个占位符，在别处引用该参数不一定可靠。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;在打开游标时给参数赋值，语法如下：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;OPEN cursor_name[value[,value]....];&lt;br /&gt;&lt;br /&gt;参数值可以是文字或变量。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;DECALRE&lt;br /&gt;&lt;br /&gt;CURSOR c_dept IS SELECT * FROM dept ORDER BY deptno;&lt;br /&gt;&lt;br /&gt;CURSOR c_emp (p_dept VARACHAR2) IS&lt;br /&gt;&lt;br /&gt;  SELECT ename,salary&lt;br /&gt;&lt;br /&gt;  FROM emp&lt;br /&gt;&lt;br /&gt;  WHERE deptno=p_dept&lt;br /&gt;&lt;br /&gt;  ORDER BY ename&lt;br /&gt;&lt;br /&gt;r_dept DEPT%ROWTYPE;&lt;br /&gt;&lt;br /&gt;v_ename EMP.ENAME%TYPE;&lt;br /&gt;&lt;br /&gt;v_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;v_tot_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;  OPEN c_dept;&lt;br /&gt;&lt;br /&gt;     LOOP&lt;br /&gt;&lt;br /&gt;        FETCH c_dept INTO r_dept;&lt;br /&gt;&lt;br /&gt;        EXIT WHEN c_dept%NOTFOUND;&lt;br /&gt;&lt;br /&gt;        DBMS_OUTPUT.PUT_LINE('Department:'|| r_dept.deptno||'-'||r_dept.dname);&lt;br /&gt;&lt;br /&gt;        v_tot_salary:=0;&lt;br /&gt;&lt;br /&gt;        OPEN c_emp(r_dept.deptno);&lt;br /&gt;&lt;br /&gt;            LOOP&lt;br /&gt;&lt;br /&gt;               FETCH c_emp INTO v_ename,v_salary;&lt;br /&gt;&lt;br /&gt;               EXIT WHEN c_emp%NOTFOUND;&lt;br /&gt;&lt;br /&gt;               DBMS_OUTPUT.PUT_LINE('Name:'|| v_ename||' salary:'||v_salary);&lt;br /&gt;&lt;br /&gt;               v_tot_salary:=v_tot_salary+v_salary;&lt;br /&gt;&lt;br /&gt;            END LOOP;&lt;br /&gt;&lt;br /&gt;        CLOSE c_emp;&lt;br /&gt;&lt;br /&gt;        DBMS_OUTPUT.PUT_LINE('Toltal Salary for dept:'|| v_tot_salary);&lt;br /&gt;&lt;br /&gt;     END LOOP;&lt;br /&gt;&lt;br /&gt;  CLOSE c_dept;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;游标FOR循环&lt;br /&gt;&lt;br /&gt;在大多数时候我们在设计程序的时候都遵循下面的步骤：&lt;br /&gt;&lt;br /&gt;1、打开游标&lt;br /&gt;&lt;br /&gt;2、开始循环&lt;br /&gt;&lt;br /&gt;3、从游标中取值&lt;br /&gt;&lt;br /&gt;4、检查那一行被返回&lt;br /&gt;&lt;br /&gt;5、处理&lt;br /&gt;&lt;br /&gt;6、关闭循环&lt;br /&gt;&lt;br /&gt;7、关闭游标&lt;br /&gt;&lt;br /&gt;    可以简单的把这一类代码称为游标用于循环。但还有一种循环与这种类型不相同，这就是FOR循环，用于FOR循环的游标按照正常的声明方式声明，它的优点在于不需要显式的打开、关闭、取数据，测试数据的存在、定义存放数据的变量等等。游标FOR循环的语法如下：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;FOR record_name IN&lt;br /&gt;&lt;br /&gt; (corsor_name[(parameter[,parameter]...)]&lt;br /&gt;&lt;br /&gt; | (query_difinition)&lt;br /&gt;&lt;br /&gt;LOOP&lt;br /&gt;&lt;br /&gt;  statements&lt;br /&gt;&lt;br /&gt;END LOOP;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;下面我们用for循环重写上面的例子：&lt;br /&gt;&lt;br /&gt;DECALRE&lt;br /&gt;&lt;br /&gt;CURSOR c_dept IS SELECT deptno,dname FROM dept ORDER BY deptno;&lt;br /&gt;&lt;br /&gt;CURSOR c_emp (p_dept VARACHAR2) IS&lt;br /&gt;&lt;br /&gt; SELECT ename,salary&lt;br /&gt;&lt;br /&gt; FROM emp&lt;br /&gt;&lt;br /&gt; WHERE deptno=p_dept&lt;br /&gt;&lt;br /&gt; ORDER BY ename&lt;br /&gt;&lt;br /&gt;v_tot_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;   FOR r_dept IN c_dept LOOP&lt;br /&gt;&lt;br /&gt;     DBMS_OUTPUT.PUT_LINE('Department:'|| r_dept.deptno||'-'||r_dept.dname);&lt;br /&gt;&lt;br /&gt;     v_tot_salary:=0;&lt;br /&gt;&lt;br /&gt;     FOR r_emp IN c_emp(r_dept.deptno) LOOP&lt;br /&gt;&lt;br /&gt;    DBMS_OUTPUT.PUT_LINE('Name:' || v_ename || 'salary:' || v_salary); &lt;br /&gt;&lt;br /&gt;    v_tot_salary:=v_tot_salary+v_salary;&lt;br /&gt;&lt;br /&gt;     END LOOP;&lt;br /&gt;&lt;br /&gt;     DBMS_OUTPUT.PUT_LINE('Toltal Salary for dept:'|| v_tot_salary);&lt;br /&gt;&lt;br /&gt;  END LOOP;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;在游标FOR循环中使用查询&lt;br /&gt;&lt;br /&gt;    在游标FOR循环中可以定义查询，由于没有显式声明所以游标没有名字，记录名通过游标查询来定义。&lt;br /&gt;&lt;br /&gt;DECALRE&lt;br /&gt;&lt;br /&gt; v_tot_salary EMP.SALARY%TYPE;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;  FOR r_dept IN (SELECT deptno,dname FROM dept ORDER BY deptno) LOOP&lt;br /&gt;&lt;br /&gt;     DBMS_OUTPUT.PUT_LINE('Department:'|| r_dept.deptno||'-'||r_dept.dname);&lt;br /&gt;&lt;br /&gt;     v_tot_salary:=0;&lt;br /&gt;&lt;br /&gt;     FOR r_emp IN (SELECT ename,salary&lt;br /&gt;&lt;br /&gt;            　　　FROM emp&lt;br /&gt;&lt;br /&gt;            　　　WHERE deptno=p_dept&lt;br /&gt;&lt;br /&gt;            　　　ORDER BY ename) LOOP&lt;br /&gt;&lt;br /&gt;       DBMS_OUTPUT.PUT_LINE('Name:'|| v_ename||' salary:'||v_salary);&lt;br /&gt;&lt;br /&gt;       v_tot_salary:=v_tot_salary+v_salary;&lt;br /&gt;&lt;br /&gt;     END LOOP;&lt;br /&gt;&lt;br /&gt;  DBMS_OUTPUT.PUT_LINE('Toltal Salary for dept:'|| v_tot_salary);&lt;br /&gt;&lt;br /&gt;  END LOOP;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;游标中的子查询&lt;br /&gt;&lt;br /&gt;    语法如下：&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;CURSOR C1 IS SELECT * FROM emp&lt;br /&gt;&lt;br /&gt;  WHERE deptno NOT IN (SELECT deptno&lt;br /&gt;&lt;br /&gt;   FROM dept&lt;br /&gt;&lt;br /&gt;   WHERE dname!='ACCOUNTING');&lt;br /&gt;&lt;br /&gt;可以看出与SQL中的子查询没有什么区别。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;游标中的更新和删除&lt;br /&gt;&lt;br /&gt;    在PL/SQL中依然可以使用UPDATE和DELETE语句更新或删除数据行。显式游标只有在需要获得多行数据的情况下使用。PL/SQL提供了仅仅使用游标就可以执行删除或更新记录的方法。&lt;br /&gt;&lt;br /&gt;UPDATE 或DELETE语句中的WHERE CURRENT OF子串专门处理要执行UPDATE或DELETE操作的表中取出的最近的数据。要使用这个方法，在声明游标时必须使用FOR UPDATE子串，当对话使用FOR UPDATE子串打开一个游标时，所有返回集中的数据行都将处于行级（ROW-LEVEL)独占式锁定，其他对象只能查询这些数据行，不能进行 UPDATE、DELETE或SELECT...FOR            UPDATE操作。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;语法：&lt;br /&gt;&lt;br /&gt;    FOR UPDATE [OF [schema.]table.column[,[schema.]table.column]..&lt;br /&gt;&lt;br /&gt;    [nowait]&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;    在多表查询中，使用OF子句来锁定特定的表,如果忽略了OF子句，那么所有表中选择的数据行都将被锁定。如果这些数据行已经被其他会话锁定，那么正常情况下Oracle将等待，直到数据行解锁。&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;在UPDATE和DELETE中使用WHERE CURRENT OF子串的语法如下：&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;WHERE{CURRENT OF cursor_name|search_condition}&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;&lt;br /&gt;DELCARE&lt;br /&gt;&lt;br /&gt;CURSOR c1 IS SELECT empno,salary&lt;br /&gt;&lt;br /&gt; FROM emp&lt;br /&gt;&lt;br /&gt; WHERE comm IS NULL&lt;br /&gt;&lt;br /&gt; FOR UPDATE OF comm;&lt;br /&gt;&lt;br /&gt;v_comm NUMBER(10,2);&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;   FOR r1 IN c1 LOOP&lt;br /&gt;&lt;br /&gt;     IF r1.salary&lt;500 THEN&lt;br /&gt;&lt;br /&gt;       v_comm:=r1.salary*0.25;&lt;br /&gt;&lt;br /&gt;     ELSEIF r1.salary&lt;1000 THEN&lt;br /&gt;&lt;br /&gt;       v_comm:=r1.salary*0.20;&lt;br /&gt;&lt;br /&gt;     ELSEIF r1.salary&lt;3000 THEN&lt;br /&gt;&lt;br /&gt;       v_comm:=r1.salary*0.15;&lt;br /&gt;&lt;br /&gt;     ELSE&lt;br /&gt;&lt;br /&gt;         v_comm:=r1.salary*0.12;&lt;br /&gt;&lt;br /&gt;     END IF;&lt;br /&gt;&lt;br /&gt;   UPDATE emp;&lt;br /&gt;&lt;br /&gt;   SET comm=v_comm&lt;br /&gt;&lt;br /&gt;   WHERE CURRENT OF c1l;&lt;br /&gt;&lt;br /&gt;   END LOOP;&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;Last edited Aug 17, 2006 - Note created Aug 16, 2006&lt;br /&gt; ▶ &lt;br /&gt; &lt;br /&gt;EditDelete&lt;br /&gt;ORACLE 的这类错误在ORALCE的文档中有详细说明，但原因及措施说明不详细，本文当着重说明如何解决这类错误。 1、ORA-12571、ORA-03113、ORA-03114、ORA-01041 特征:客户端(代理或应用服务器)有时报这类断连错误原因:如果偶尔出现一次，则可能为网络原因或用户异常中止，如果经常出现则为客户端与服务端的字符集不一致。措施:如果偶尔出现，可在服务端的协议配置文件PROTOCOL.ORA中增加一行 TCP.NODELAY=YES; 如果经常出现，则为客户端与服务端字符集不一致或网络原因。 客户端的字符集在注册表里定义: HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG 在客户端注册表中的TCP参数项中设置 TCPMAXDATARETRANSMITIONS=20。 2、ORA-01000 特征:达到会话允许的最大 游标 数原因:达到会话允许的最大游标数 措施:有两种解决方法: (1)在初始化文件INIT.ORA文件中增加OPEN_CURSORS的数量，一般要求大于200。 (2)在应用级，与开发工具有关，例如设置MAXOPEN_CURSORS等。 3、ORA-01545 特征:某个 回滚段 不可用原因:(1)当使回滚段ONLINE时，但回滚段不可用，例如回滚段所在表空间OFFLINE; (2) 当使回滚段ONLINE时，但回滚段已ONLINE，例如回滚段被使用两次，典型的案例如OPS方式时，回滚段不能公有; (3)删除回滚段时，回滚段中有活动的事务; 措施:(1)确保回滚段可 (2)从初始化文件INIT.ORA的参数ROLLBACK)SEGMENTS中删除指定的回滚段。 (3)可以将回滚段所在表空间删除，取消UNDO事务 4、ORA-0165x 特征:表空间没有足够的空间供分配原因:表空间已满;存储参数不合理，NEXT太小;没有连续的区间措施:如果表空间已满，则需为表空间增加文件;如果存储参数不合理，则需增加INITIAL和NEXT;如果没有连续的区间，需要合并空闲的表空间。查看空间碎片用DBA_FREE_SPACE 5、ORA-01555 特征:当前会话无法读到以前版本的数据原因:原因很多，主要原因有下列:回滚段太小、太少;回滚段冲突;交叉提交(FETCH_ACROSS) 措施:增加回滚段数量; 6、ORA-04031 特征:共享池内存区内存不够，或产生内存碎片 原因:当试图装载一个大包时或执行一个较大的 存储过程时，而共享池没有连续的内存空间。 措施:如果是内存不够，则增加SHARE)POOL_SIZE; 如果是内存碎片，执行alter system flush share_pool 7、ORA-04091 特征:触发器工作不正常原因:一个行触发读取或修改变化的表(正在修改、插入)时，产生这种错误。 措施:检查触发器脚本，保证引用完整性 8、ORA-01242、ORA-01113 特征:介质故障导致数据库宕机 原因:介质故障。措施:检查硬件故障;修改dbshut脚本，将其中的STARTUP命令修改为: Startup open recover Alter database open&lt;br /&gt;Note created Aug 16, 2006&lt;br /&gt;Oracle常见错误诊断_站长技术站 - www.souzz.net/...&lt;br /&gt; ▶ &lt;br /&gt; &lt;br /&gt;EditDelete&lt;br /&gt;摘自： 求在9i的存储过程中二维数组的完整例子及说明,在线等.table ,varrry ,recor都行. ---------------------- 单维数组 ------------------------ DECLARE TYPE emp_ssn_array IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; best_employees emp_ssn_array; worst_employees emp_ssn_array; BEGIN best_employees(1) := '123456'; best_employees(2) := '888888'; worst_employees(1) := '222222'; worst_employees(2) := '666666'; FOR i IN 1..best_employees.count LOOP DBMS_OUTPUT.PUT_LINE('i=' ¦ ¦ i ¦ ¦ ', best_employees= ' ¦ &amp;brvbarbest_employees(i) ¦ ¦ ', worst_employees= ' ¦ &amp;brvbarworst_employees(i)); END LOOP; END; ---------------------- 多维数组 ------------------------ DECLARE TYPE emp_type IS RECORD ( emp_id number, emp_name string(80), emp_gender string(80)); TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER; emp_rec_array emp_type_array; emp_rec emp_type; BEGIN emp_rec.emp_id := 300000000; emp_rec.emp_name := 'Barbara'; emp_rec.emp_gender := 'Female'; emp_rec_array(1) := emp_rec; emp_rec.emp_id := 300000008; emp_rec.emp_name := 'Rick'; emp_rec.emp_gender := 'Male'; emp_rec_array(2) := emp_rec; FOR i IN 1..emp_rec_array.count LOOP DBMS_OUTPUT.PUT_LINE('i=' ¦ &amp;brvbari ¦ ¦', emp_id =' ¦ &amp;brvbaremp_rec_array(i).emp_id ¦ ¦', emp_name =' ¦ &amp;brvbaremp_rec_array(i).emp_name ¦ ¦', emp_gender = ' ¦ &amp;brvbaremp_rec_array(i).emp_gender); END LOOP; END; -------------- Result -------------- i=1, emp_id =300000000, emp_name =Barbara, emp_gender = Female i=2, emp_id =300000008, emp_name =Rick, emp_gender = Male&lt;br /&gt;Note created Aug 17, 2006&lt;br /&gt;求在9i的存储过程中二维数组的完整例子及说明,在线等.table ,varrry ,recor都行. - 开发 源码 常见问题 - faq.lvjiyong.com/...&lt;br /&gt; ▼ &lt;br /&gt; &lt;br /&gt;EditDelete&lt;br /&gt;&lt;br /&gt;    Oracle 下的Length()函数不能区分中英文，只能得到字符数而不能得到字节数，很多时候插入string到字段中时总要先进行一次检查，防止string长度超过了字段定义的长度，一般大家都是把这个检测放到应用程序中执行，用我写的这个小函数就可以实现在数据库服务器端对要插入的字段进行检测。&lt;br /&gt;&lt;br /&gt;    create or replace function f_henry_GetStringLength(pv_String in varchar2) return integer is&lt;br /&gt;      Result integer;&lt;br /&gt;      i number;&lt;br /&gt;    begin&lt;br /&gt;      Result:=0;&lt;br /&gt;      if length(pv_String)=0 then&lt;br /&gt;        return(Result);&lt;br /&gt;      end if;&lt;br /&gt;      for i in 1 .. length(pv_String) loop&lt;br /&gt;        if ascii(substr(pv_String,i,1))&lt;256 then&lt;br /&gt;          Result:=Result+1;&lt;br /&gt;        else&lt;br /&gt;          Result:=Result+2;&lt;br /&gt;        end if;&lt;br /&gt;      end loop;&lt;br /&gt;      return(Result);&lt;br /&gt;    end f_henry_GetStringLength;&lt;br /&gt;&lt;br /&gt;    /*************************以下是测试***************************/&lt;br /&gt;&lt;br /&gt;    SQL&gt; select length('啊$@oii发大幅') from dual;&lt;br /&gt;&lt;br /&gt;    LENGTH('啊$@OII发大幅')&lt;br /&gt;    -----------------------&lt;br /&gt;                          9&lt;br /&gt;&lt;br /&gt;    SQL&gt; select f_henry_GetStringLength('啊$@oii发大幅') from dual;&lt;br /&gt;&lt;br /&gt;    F_HENRY_GETSTRINGLENGTH('啊$@O&lt;br /&gt;    ------------------------------&lt;br /&gt;                                13&lt;br /&gt;&lt;br /&gt;Note created Aug 17, 2006&lt;br /&gt;Oracle自定义函数——f_henry_GetStringLength_ - www.tbnet.cn/...&lt;br /&gt; ▼ &lt;br /&gt; &lt;br /&gt;EditDelete&lt;br /&gt;访问页面的人可以在线聊天&lt;br /&gt; &lt;br /&gt;Note created Aug 17, 2006&lt;br /&gt;Woocall首页 - woocall.sina.com.cn/...&lt;br /&gt; ▼ &lt;br /&gt; &lt;br /&gt;EditDelete&lt;br /&gt;&lt;br /&gt;    EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前，EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能，较之以前它相当容易编码.尽管DBMS_SQL仍然可用，但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。&lt;br /&gt;    　　&lt;br /&gt;    　　使用技巧&lt;br /&gt;    　　&lt;br /&gt;    　　1. EXECUTE IMMEDIATE将不会提交一个DML事务执行，应该显式提交&lt;br /&gt;    　　如果通过EXECUTE IMMEDIATE处理DML命令，那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据&lt;br /&gt;    　　&lt;br /&gt;    　　2. 不支持返回多行的查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors.&lt;br /&gt;    　　&lt;br /&gt;    　　3. 当执行SQL语句时，不要用分号，当执行PL/SQL块时，在其尾部用分号.&lt;br /&gt;    　　&lt;br /&gt;    　　4. 在Oracle手册中，未详细覆盖这些功能。下面的例子展示了所有用到Execute immediate的可能方面.希望能给你带来方便.&lt;br /&gt;    　　&lt;br /&gt;    　　5. 对于Forms开发者,当在PL/SQL 8.0.6.3.版本中，Forms 6i不能使用此功能.&lt;br /&gt;    　　&lt;br /&gt;    　　EXECUTE IMMEDIATE用法例子&lt;br /&gt;    　　&lt;br /&gt;    　　1. 在PL/SQL运行DDL语句&lt;br /&gt;    　　&lt;br /&gt;    　　 begin&lt;br /&gt;    　　　execute immediate 'set role all';&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　2. 给动态语句传值(USING 子句)&lt;br /&gt;    　　&lt;br /&gt;    　　 declare&lt;br /&gt;    　　　l_depnam varchar2(20) := 'testing';&lt;br /&gt;    　　　l_loc　　varchar2(10) := 'Dubai';&lt;br /&gt;    　　　begin&lt;br /&gt;    　　　execute immediate 'insert into dept values　(:1, :2, :3)'&lt;br /&gt;    　　　　using 50, l_depnam, l_loc;&lt;br /&gt;    　　　commit;&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　3. 从动态语句检索值(INTO子句)&lt;br /&gt;    　　&lt;br /&gt;    　　 declare&lt;br /&gt;    　　　l_cnt　　varchar2(20);&lt;br /&gt;    　　 begin&lt;br /&gt;    　　　execute immediate 'select count(1) from emp'&lt;br /&gt;    　　　　into l_cnt;&lt;br /&gt;    　　　dbms_output.put_line(l_cnt);&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　4. 动态调用例程.例程中用到的绑定变量参数必须指定参数类型.黓认为IN类型,其它类型必须显式指定&lt;br /&gt;    　　&lt;br /&gt;    　　 declare&lt;br /&gt;    　　　l_routin　 varchar2(100) := 'gen2161.get_rowcnt';&lt;br /&gt;    　　　l_tblnam　 varchar2(20) := 'emp';&lt;br /&gt;    　　　l_cnt　　　number;&lt;br /&gt;    　　　l_status　 varchar2(200);&lt;br /&gt;    　　 begin&lt;br /&gt;    　　　execute immediate 'begin ' || l_routin || '(:2, :3, :4); end;'&lt;br /&gt;    　　　　using in l_tblnam, out l_cnt, in out l_status;&lt;br /&gt;    　　&lt;br /&gt;    　　　if l_status != 'OK' then&lt;br /&gt;    　　　　 dbms_output.put_line('error');&lt;br /&gt;    　　　end if;&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　5. 将返回值传递到PL/SQL记录类型;同样也可用%rowtype变量&lt;br /&gt;    　　&lt;br /&gt;    　　 declare&lt;br /&gt;    　　　type empdtlrec is record (empno　number(4),&lt;br /&gt;    　　　　　　　　　　　　　　　 ename　varchar2(20),&lt;br /&gt;    　　　　　　　　　　　　　　　 deptno　number(2));&lt;br /&gt;    　　　empdtl empdtlrec;&lt;br /&gt;    　　 begin&lt;br /&gt;    　　　execute immediate 'select empno, ename, deptno ' ||&lt;br /&gt;    　　　　　　　　　　　 'from emp where empno = 7934'&lt;br /&gt;    　　　　into empdtl;&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　6. 传递并检索值.INTO子句用在USING子句前&lt;br /&gt;    　　&lt;br /&gt;    　　 declare&lt;br /&gt;    　　　l_dept　　pls_integer := 20;&lt;br /&gt;    　　　l_nam　　 varchar2(20);&lt;br /&gt;    　　　l_loc　　 varchar2(20);&lt;br /&gt;    　　 begin&lt;br /&gt;    　　　execute immediate 'select dname, loc from dept where deptno = :1'&lt;br /&gt;    　　　　into l_nam, l_loc&lt;br /&gt;    　　　　using l_dept ;&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　7. 多行查询选项.对此选项用insert语句填充临时表，用临时表进行进一步的处理,也可以用REF cursors纠正此缺憾.&lt;br /&gt;    　　&lt;br /&gt;    　　 declare&lt;br /&gt;    　　　l_sal　 pls_integer := 2000;&lt;br /&gt;    　　 begin&lt;br /&gt;    　　　execute immediate 'insert into temp(empno, ename) ' ||&lt;br /&gt;    　　　　　　　　　　　 '　　　　　select empno, ename from emp ' ||&lt;br /&gt;    　　　　　　　　　　　 '　　　　　where　sal &gt; :1'&lt;br /&gt;    　　　　using l_sal;&lt;br /&gt;    　　　commit;&lt;br /&gt;    　　 end;&lt;br /&gt;    　　&lt;br /&gt;    　　对于处理动态语句,EXECUTE IMMEDIATE比以前可能用到的更容易并且更高效.当意图执行动态语句时，适当地处理异常更加重要.应该关注于捕获所有可能的异常.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115759674733272602?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tb.blog.csdn.net/TrackBack.aspx?PostId=1005094' title='游标使用大全'/><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115759674733272602/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115759674733272602' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115759674733272602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115759674733272602'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/09/blog-post_06.html' title='游标使用大全'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31732920.post-115397242320266221</id><published>2006-07-26T20:53:00.000-07:00</published><updated>2006-09-06T19:37:50.413-07:00</updated><title type='text'>iText - Google 网上论坛</title><content type='html'>&lt;a href="http://groups.google.com.sg/groups?sourceid=navclient-ff&amp;amp;ie=UTF-8&amp;rlz=1B2GGGL_zh-CNCN176&amp;amp;q=iText"&gt;iText - Google 网上论坛&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2310409243941224";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31732920-115397242320266221?l=passtwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://passtwo.blogspot.com/feeds/115397242320266221/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31732920&amp;postID=115397242320266221' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115397242320266221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31732920/posts/default/115397242320266221'/><link rel='alternate' type='text/html' href='http://passtwo.blogspot.com/2006/07/itext-google.html' title='iText - Google 网上论坛'/><author><name>欢迎来到我的bolog</name><uri>http://www.blogger.com/profile/01696374151186813830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
