﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-欢迎来到小小家院-随笔分类-数据库类</title><link>http://www.blogjava.net/wangxq/category/17194.html</link><description>共同努力,共造辉煌!</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 21:11:40 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 21:11:40 GMT</pubDate><ttl>60</ttl><item><title>简单的oracle备份恢复批处理文件</title><link>http://www.blogjava.net/wangxq/archive/2007/01/26/96113.html</link><dc:creator>扭转乾坤</dc:creator><author>扭转乾坤</author><pubDate>Fri, 26 Jan 2007 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/wangxq/archive/2007/01/26/96113.html</guid><wfw:comment>http://www.blogjava.net/wangxq/comments/96113.html</wfw:comment><comments>http://www.blogjava.net/wangxq/archive/2007/01/26/96113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxq/comments/commentRss/96113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxq/services/trackbacks/96113.html</trackback:ping><description><![CDATA[
		<p>写个简单的批处理文件备份恢复：<br />备份：<br />@echo off　　　　　　　　　　　             不显示命令行 <br />　　　　 <br />echo 开始备份表.....　　　　　　                 打印信息　　　　　　　　　　　　　　　<br />D:                                                                      DOS切换到D: 盘<br />cd oracle\ora92\bin　　　　　　                    切换到cd oracle\ora92\bin目录<br />exp <a href="mailto:enpuser/ABC12345@cms30">用户名/密码@</a>数据库 file=d:\config_bak.dmp tables=(table1,table2)      备份表一表二到d:\config_bak.dmp<br />echo 备份完毕！<br /><br />恢复：<br />@echo off　　　　　　　　　　　<br />　　　　<br />echo 开始恢复表.....　　　　　　　　　　　　　　　　　　　　　<br />D:<br />cd oracle\ora92\bin<br />imp <a href="mailto:enpuser/ABC12345@cms30">用户名/密码@</a>数据库 file=d:\config_bak.dmp tables=(table1,table2)  ignore=y   <br />sqlplus /nolog @oraStartup.sql&gt;&gt;oraStartup.log 调用sql文件<br />pause                                                                 执行完sql文件以后暂停，看信息<br />echo 恢复完毕！<br /><br />编写oraStartup.sql<br />conn <a href="mailto:enpuser/ABC12345@cms30">用户名/密码@</a>数据库 as sysdba<br />select * from table1；<br />quit；<br />　　　　　　 <br /></p>
		<p>　　　　　　 <br /><br /><br />　执行环境：可以在SQLPLUS.EXE或者DOS（命令行）中执行，<br />　　DOS中可以执行时由于 在oracle 8i 中  安装目录\ora81\BIN被设置为全局路径，<br />　　该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。<br />　　oracle用java编写，我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。<br />　　SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类，完成导入导出功能。 </p>
		<p>　　下面介绍的是导入导出的实例，向导入导出看实例基本上就可以完成，因为导入导出很简单。<br />　　数据导出：<br />　　1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中<br />　　exp system/manager@TEST file=d:\daochu.dmp full=y<br />　　2 将数据库中system用户与sys用户的表导出<br />　　exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)<br />　　3 将数据库中的表table1 、table2导出<br />　　exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) <br />　　4 将数据库中的表table1中的字段filed1以"00"打头的数据导出<br />　　exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"<br />　　<br />　　上面是常用的导出，对于压缩我不太在意，用winzip把dmp文件可以很好的压缩。<br />　　不过在上面命令后面 加上 compress=y  就可以了</p>
		<p>　　数据的导入<br />　　1 将D:\daochu.dmp 中的数据导入 TEST数据库中。<br />　　imp system/manager@TEST  file=d:\daochu.dmp<br />　　上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。<br />　　在后面加上 ignore=y 就可以了。<br />　　2 将d:\daochu.dmp中的表table1 导入<br />　　imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1) <br /></p>
		<p>        导入<br />　　基本上上面的导入导出够用了。不少情况我是将表彻底删除，然后导入。 <br /><br /><br /></p>
		<h1>Oracle数据库备份与恢复的三种方法</h1>
		<p style="TEXT-INDENT: 2em">Oracle数据库有三种标准的备份方法，它们分别是导出／导入（EXP/IMP）、热备份和冷备份。导出备件是一种逻辑备份，冷备份和热备份是物理备份。 </p>
		<p style="TEXT-INDENT: 2em">一、 导出／导入（Export／Import） </p>
		<p style="TEXT-INDENT: 2em">利用Export可将数据从数据库中提取出来，利用Import则可将提取出来的数据送回到Oracle数据库中去。 </p>
		<p style="TEXT-INDENT: 2em">１、 简单导出数据（Export）和导入数据（Import） </p>
		<p style="TEXT-INDENT: 2em">Oracle支持三种方式类型的输出： </p>
		<p style="TEXT-INDENT: 2em">（１）、表方式（T方式），将指定表的数据导出。 </p>
		<p style="TEXT-INDENT: 2em">（２）、用户方式（U方式），将指定用户的所有对象及数据导出。 </p>
		<p style="TEXT-INDENT: 2em">（３）、全库方式（Full方式），瘵数据库中的所有对象导出。 </p>
		<p style="TEXT-INDENT: 2em">数据导入（Import）的过程是数据导出（Export）的逆过程，分别将数据文件导入数据库和将数据库数据导出到数据文件。 </p>
		<p style="TEXT-INDENT: 2em">２、 增量导出／导入 </p>
		<p style="TEXT-INDENT: 2em">增量导出是一种常用的数据备份方法，它只能对整个数据库来实施，并且必须作为SYSTEM来导出。在进行此种导出时，系统不要求回答任何问题。导出文件名缺省为export.dmp，如果不希望自己的输出文件定名为export.dmp，必须在命令行中指出要用的文件名。 </p>
		<p style="TEXT-INDENT: 2em">增量导出包括三种类型： </p>
		<p style="TEXT-INDENT: 2em">（１）、“完全”增量导出（Complete） </p>
		<p style="TEXT-INDENT: 2em">即备份三个数据库，比如： </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>exp system/manager inctype=complete file=040731.dmp</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">（２）、“增量型”增量导出 </p>
		<p style="TEXT-INDENT: 2em">备份上一次备份后改变的数据，比如： </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>exp system/manager inctype=incremental file=040731.dmp</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">（３）、“累积型”增量导出 </p>
		<p style="TEXT-INDENT: 2em">累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如： </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>exp system/manager inctype=cumulative file=040731.dmp</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">数据库管理员可以排定一个备份日程表，用数据导出的三个不同方式合理高效的完成。 </p>
		<p style="TEXT-INDENT: 2em">比如数据库的被封任务可以做如下安排： </p>
		<p style="TEXT-INDENT: 2em">星期一：完全备份（A） </p>
		<p style="TEXT-INDENT: 2em">星期二：增量导出（B） </p>
		<p style="TEXT-INDENT: 2em">星期三：增量导出（C） </p>
		<p style="TEXT-INDENT: 2em">星期四：增量导出（D） </p>
		<p style="TEXT-INDENT: 2em">星期五：累计导出（E） </p>
		<p style="TEXT-INDENT: 2em">星期六：增量导出（F） </p>
		<p style="TEXT-INDENT: 2em">星期日：增量导出（G） </p>
		<p style="TEXT-INDENT: 2em">如果在星期日，数据库遭到意外破坏，数据库管理员可按一下步骤来回复数据库： </p>
		<p style="TEXT-INDENT: 2em">第一步：用命令CREATE DATABASE重新生成数据库结构； </p>
		<p style="TEXT-INDENT: 2em">第二步：创建一个足够大的附加回滚。 </p>
		<p style="TEXT-INDENT: 2em">第三步：完全增量导入A： </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>imp system/manager inctype=RESTORE FULL=y FILE=A</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">第四步：累计增量导入E： </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>imp system/manager inctype=RESTORE FULL=Y FILE=E</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">第五步：最近增量导入F： </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>imp system/manager inctype=RESTORE FULL=Y FILE=F</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">二、 冷备份 </p>
		<p style="TEXT-INDENT: 2em">冷备份发生在数据库已经正常关闭的情况下，当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言，冷备份时最快和最安全的方法。冷备份的优点是： </p>
		<p style="TEXT-INDENT: 2em">１、 是非常快速的备份方法（只需拷文件） </p>
		<p style="TEXT-INDENT: 2em">２、 容易归档（简单拷贝即可） </p>
		<p style="TEXT-INDENT: 2em">３、 容易恢复到某个时间点上（只需将文件再拷贝回去） </p>
		<p style="TEXT-INDENT: 2em">４、 能与归档方法相结合，做数据库“最佳状态”的恢复。 </p>
		<p style="TEXT-INDENT: 2em">５、 低度维护，高度安全。 </p>
		<p style="TEXT-INDENT: 2em">但冷备份也有如下不足： </p>
		<p style="TEXT-INDENT: 2em">１、 单独使用时，只能提供到“某一时间点上”的恢复。 </p>
		<p style="TEXT-INDENT: 2em">２、 再实施备份的全过程中，数据库必须要作备份而不能作其他工作。也就是说，在冷备份过程中，数据库必须是关闭状态。 </p>
		<p style="TEXT-INDENT: 2em">３、 若磁盘空间有限，只能拷贝到磁带等其他外部存储设备上，速度会很慢。 </p>
		<p style="TEXT-INDENT: 2em">４、 不能按表或按用户恢复。 </p>
		<p style="TEXT-INDENT: 2em">如果可能的话（主要看效率），应将信息备份到磁盘上，然后启动数据库（使用户可以工作）并将备份的信息拷贝到磁带上（拷贝的同时，数据库也可以工作）。冷备份中必须拷贝的文件包括： </p>
		<p style="TEXT-INDENT: 2em">１、 所有数据文件 </p>
		<p style="TEXT-INDENT: 2em">２、 所有控制文件 </p>
		<p style="TEXT-INDENT: 2em">３、 所有联机REDO LOG文件 </p>
		<p style="TEXT-INDENT: 2em">４、 Init.ora文件（可选） </p>
		<p style="TEXT-INDENT: 2em">值得注意的使冷备份必须在数据库关闭的情况下进行，当数据库处于打开状态时，执行数据库文件系统备份是无效的。 </p>
		<p style="TEXT-INDENT: 2em">下面是作冷备份的完整例子。 </p>
		<p style="TEXT-INDENT: 2em">（1） 关闭数据库 </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>sqlplus /nolog 
sql&gt;;connect /as sysdba 
sql&gt;;shutdown normal;</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">（2） 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件 </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>sql&gt;;cp &lt;file&gt;; &lt;backup directory&gt;;</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">（3） 重启Oracle数据库 </p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>sql&gt;;startup</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</center>
		<p style="TEXT-INDENT: 2em">三、 热备份 </p>
		<p style="TEXT-INDENT: 2em">热备份是在数据库运行的情况下，采用archivelog mode方式备份数据库的方法。所以，如果你有昨天夜里的一个冷备份而且又有今天的热备份文件，在发生问题时，就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作，并需要大量的档案空间。一旦数据库运行在archivelog状态下，就可以做备份了。热备份的命令文件由三部分组成： </p>
		<p style="TEXT-INDENT: 2em">1． 数据文件一个表空间一个表空间的备份。 </p>
		<p style="TEXT-INDENT: 2em">（1） 设置表空间为备份状态 </p>
		<p style="TEXT-INDENT: 2em">（2） 备份表空间的数据文件 </p>
		<p style="TEXT-INDENT: 2em">（3） 回复表空间为正常状态 </p>
		<p style="TEXT-INDENT: 2em">2． 备份归档log文件 </p>
		<p style="TEXT-INDENT: 2em">（1） 临时停止归档进程 </p>
		<p style="TEXT-INDENT: 2em">（2） log下那些在archive rede log目标目录中的文件 </p>
		<p style="TEXT-INDENT: 2em">（3） 重新启动archive进程 </p>
		<p style="TEXT-INDENT: 2em">（4） 备份归档的redo log文件 </p>
		<p style="TEXT-INDENT: 2em">3． 用alter database bachup controlfile命令来备份控制文件 </p>
		<p style="TEXT-INDENT: 2em">热备份的优点是： </p>
		<p style="TEXT-INDENT: 2em">1． 可在表空间或数据库文件级备份，备份的时间短。 </p>
		<p style="TEXT-INDENT: 2em">2． 备份时数据库仍可使用。 </p>
		<p style="TEXT-INDENT: 2em">3． 可达到秒级恢复（恢复到某一时间点上）。 </p>
		<p style="TEXT-INDENT: 2em">4． 可对几乎所有数据库实体做恢复 </p>
		<p style="TEXT-INDENT: 2em">5． 恢复是快速的，在大多数情况下爱数据库仍工作时恢复。 </p>
		<p style="TEXT-INDENT: 2em">热备份的不足是： </p>
		<p style="TEXT-INDENT: 2em">1． 不能出错，否则后果严重 </p>
		<p style="TEXT-INDENT: 2em">2． 若热备份不成功，所得结果不可用于时间点的恢复 </p>
		<p style="TEXT-INDENT: 2em">3． 因难于维护，所以要特别仔细小心，不允许“以失败告终”。</p>
		<p style="TEXT-INDENT: 2em">
				<br />
				<br />
				<br />参考资料：<a href="http://publish.it168.com/2006/0601/20060601045701.shtml?positioncode=1545">http://publish.it168.com/2006/0601/20060601045701.shtml?positioncode=1545</a><br /><a href="http://bbs.zol.com.cn/index20061024/index_124_11079.html">http://bbs.zol.com.cn/index20061024/index_124_11079.html</a><br /><a href="http://community.csdn.net/Expert/TopicView3.asp?id=5276764">http://community.csdn.net/Expert/TopicView3.asp?id=5276764</a><br /><a href="http://bbs.gdei.edu.cn/faster.php?id=t-55261">http://bbs.gdei.edu.cn/faster.php?id=t-55261</a><br /><a href="http://www.dvbbs.net/tech/data/2006031819272.asp">http://www.dvbbs.net/tech/data/2006031819272.asp</a><br /><a href="http://study.feloo.com/computer/data/Oracle/200509/121026.html">http://study.feloo.com/computer/data/Oracle/200509/121026.html</a><br /></p>
<img src ="http://www.blogjava.net/wangxq/aggbug/96113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxq/" target="_blank">扭转乾坤</a> 2007-01-26 11:54 <a href="http://www.blogjava.net/wangxq/archive/2007/01/26/96113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>存储过程的一些用法</title><link>http://www.blogjava.net/wangxq/archive/2006/11/14/81084.html</link><dc:creator>扭转乾坤</dc:creator><author>扭转乾坤</author><pubDate>Tue, 14 Nov 2006 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/wangxq/archive/2006/11/14/81084.html</guid><wfw:comment>http://www.blogjava.net/wangxq/comments/81084.html</wfw:comment><comments>http://www.blogjava.net/wangxq/archive/2006/11/14/81084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxq/comments/commentRss/81084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxq/services/trackbacks/81084.html</trackback:ping><description><![CDATA[
		<p>最近在用存储过程,在网上找了很多的资料,下面就参考各种资料整理的一些小例子做些阐述：<br />1. Oralce TO_NUMBER() function 的改进：<br />用Oracle TO_NUMBER进行类型转换的时候，如果有无效数字，将返回错误。遗憾的是，Oralce TO_NUMBER并不是在query运行开始就报错，而是到碰到无效数字的纪录才报错，而且只是说无效输入，并不提示是哪条纪录，也没有任何输出。如果是一张大表，query运行很久才来这么一下，而且根本不知道那里出的错，是什么值，岂不痛苦？偶就经常跟这样的表打交道，遂自建一个函数，GET_NUM：</p>
		<p>CREATE OR REPLACE FUNCTION GET_NUM(IN_TXT in VARCHAR2) RETURN NUMBER IS<br />RETRUN_VALUE NUMBER;<br />BEGIN<br /> select to_number(IN_TXT) into RETRUN_VALUE from dual;<br /> RETURN RETRUN_VALUE;<br /> <br /> EXCEPTION<br /> WHEN others<br /> THEN<br /> RETURN null;<br />END GET_NUM;<br />/<br />这样无效数字全转换成 Null,纠错容易多了。</p>
		<p>写个存储过程测试一下：<br />CREATE OR REPLACE PROCEDURE TestFun IS<br />    v_name varchar2(10);/***** 存放cursor_para中的name *****/<br />    CURSOR cursor_name IS select name from test;<br />    cursor cursor_para(p_num number) is select name from test where num = p_num;<br />begin<br />  /******* t_name为循环的临时变量******/<br />  FOR t_name IN cursor_name LOOP<br />  <br />    if (get_num(t_name.name) is not null) then<br />    <br />   open cursor_para(get_num(t_name.name));<br />   <br />   fetch cursor_para into v_name;<br />   <br />   DBMS_OUTPUT.PUT_LINE('Name:'|| v_name);<br />   <br />   close cursor_para;<br />       <br />   end if;<br />   <br />  END LOOP;<br />END TestFun;<br />/<br />存储过程也用到了带参数的游标和游标For循环,稍后介绍.</p>
		<p>其中测试表的创建：<br />create table test<br />(<br />     name varchar2(10),<br />    num number<br />)</p>
		<p>测试数据: <br />insert into test(name) values ('12_');<br />insert into test(name) values ('123');<br /><br />2.带参数的游标</p>
		<p>　　与存储过程和函数相似，可以将参数传递给游标并在查询中使用。这对于处理在某种条件下打开游标的情况非常有用。它的语法如下：</p>
		<p>CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement; </p>
		<p>　　定义参数的语法如下：</p>
		<p>Parameter_name [IN] data_type[{:=|DEFAULT} value] </p>
		<p>　　与存储过程不同的是，游标只能接受传递的值，而不能返回值。参数只定义数据类型，没有大小。 </p>
		<p>　　另外可以给参数设定一个缺省值，当没有参数值传递给游标时，就使用缺省值。游标中定义的参数只是一个占位符，在别处引用该参数不</p>
		<p>一定可靠。</p>
		<p>　　在打开游标时给参数赋值，语法如下：</p>
		<p>OPEN cursor_name[value[,value]....]; </p>
		<p>3.游标FOR循环</p>
		<p>　　在大多数时候我们在设计程序的时候都遵循下面的步骤：</p>
		<p>　　1、打开游标</p>
		<p>　　2、开始循环</p>
		<p>　　3、从游标中取值</p>
		<p>　　4、检查那一行被返回</p>
		<p>　　5、处理</p>
		<p>　　6、关闭循环</p>
		<p>　　7、关闭游标</p>
		<p>　　可以简单的把这一类代码称为游标用于循环。但还有一种循环与这种类型不相同，这就是FOR循环，用于FOR循环的游标按照正常的声明方</p>
		<p>式声明，它的优点在于不需要显式的打开、关闭、取数据，测试数据的存在、定义存放数据的变量等等。游标FOR 循环的语法如下：</p>
		<p>FOR record_name IN<br />(corsor_name[(parameter[,parameter]...)]<br />| (query_difinition)<br />LOOP<br />statements<br />END LOOP; </p>
		<p>上面的这两个用法也在例子中提到了！</p>
		<p>同理类推，也可以将TO_DATE()函数改进。<br /></p>
		<p>下面的例子自<a href="http://www.nikicn.com/bbs/dispbbs.asp?boardid=23&amp;id=908">http://www.nikicn.com/bbs/dispbbs.asp?boardid=23&amp;id=908</a><br />没有测试，留作备份之用：<br />4. 将Oracle 的Last_Day()函数改写到DB2上：<br />DROP SPECIFIC FUNCTION LAST_DAYDATE<br />;<br />CREATE FUNCTION LAST_DAY(D DATE)<br />RETURNS     DATE<br />    SPECIFIC LAST_DAYDATE<br />    LANGUAGE SQL<br />    DETERMINISTIC<br />    CONTAINS SQL<br />    CALLED ON NULL INPUT<br />    NO EXTERNAL ACTION<br />    RETURN <br />D + 1 month - day(D + 1 month) day</p>
		<p>;</p>
		<p>同理，DB2下的first day:<br />DROP SPECIFIC FUNCTION FIRST_DAYDATE<br />;<br />CREATE FUNCTION FIRST_DAY(D DATE)<br />RETURNS     DATE<br />    SPECIFIC FIRST_DAYDATE<br />    LANGUAGE SQL<br />    DETERMINISTIC<br />    CONTAINS SQL<br />    CALLED ON NULL INPUT<br />    NO EXTERNAL ACTION<br />    RETURN<br />D - day(D) day + 1 day</p>
<img src ="http://www.blogjava.net/wangxq/aggbug/81084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxq/" target="_blank">扭转乾坤</a> 2006-11-14 11:27 <a href="http://www.blogjava.net/wangxq/archive/2006/11/14/81084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql常用命令</title><link>http://www.blogjava.net/wangxq/archive/2005/08/09/9637.html</link><dc:creator>扭转乾坤</dc:creator><author>扭转乾坤</author><pubDate>Tue, 09 Aug 2005 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/wangxq/archive/2005/08/09/9637.html</guid><wfw:comment>http://www.blogjava.net/wangxq/comments/9637.html</wfw:comment><comments>http://www.blogjava.net/wangxq/archive/2005/08/09/9637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxq/comments/commentRss/9637.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxq/services/trackbacks/9637.html</trackback:ping><description><![CDATA[<P>mysql常用命令：<BR>1.shell&gt; mysql -h host -u user -p<BR>Enter password: ********<BR>Welcome to the MySQL monitor.&nbsp; Commands end with ; or \g.<BR>Your MySQL connection id is 459 to server version: 3.22.20a-log</P>
<P>Type 'help' for help.</P>
<P>mysql&gt; </P>
<P>2.在你成功地连接后，你可以在mysql&gt;提示下打入QUIT随时断开： <BR>mysql&gt; QUIT<BR>Bye</P>
<P>你也可以键入control-D断开。 </P>
<P>3.本机直接导入数据：<BR>在DOS下打入命令:<BR>D:\&gt;mysql -p databasename&lt;*.sql<BR>回车后输入密码就可以了</P>
<P>4.mysqld dbname &lt; *.sql -uusername -ppassword<BR>用sql文件导入数据<BR></P><img src ="http://www.blogjava.net/wangxq/aggbug/9637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxq/" target="_blank">扭转乾坤</a> 2005-08-09 10:01 <a href="http://www.blogjava.net/wangxq/archive/2005/08/09/9637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>