﻿<?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-Cool eye-随笔分类-Database</title><link>http://www.blogjava.net/joeyeezhang/category/6779.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 23 Jul 2011 22:16:07 GMT</lastBuildDate><pubDate>Sat, 23 Jul 2011 22:16:07 GMT</pubDate><ttl>60</ttl><item><title>PL/SQL developer 使用技巧</title><link>http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79275.html</link><dc:creator>joeyeezhang</dc:creator><author>joeyeezhang</author><pubDate>Sun, 05 Nov 2006 14:41:00 GMT</pubDate><guid>http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79275.html</guid><wfw:comment>http://www.blogjava.net/joeyeezhang/comments/79275.html</wfw:comment><comments>http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joeyeezhang/comments/commentRss/79275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joeyeezhang/services/trackbacks/79275.html</trackback:ping><description><![CDATA[<p>
				<span style="font-family: 宋体;">以下的技巧只针对</span>
				<span lang="EN-US">PL/SQL Developer 6</span>
				<span style="font-family: 宋体;">以上版本，版本</span>
				<span lang="EN-US">5</span>
				<span style="font-family: 宋体;">只有其中的部分特性。</span>
		</p>
		<p style="text-indent: -18pt;">
				<span lang="EN-US">
						<span>1，<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"></span></span>
				</span>
				<span style="font-family: 宋体;">右键菜单</span>
		</p>
		<p>
				<span style="font-family: 宋体;">在</span>
				<span lang="EN-US">PL/SQL Developer</span>
				<span style="font-family: 宋体;">（下面简称</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">）中的每一个文本编辑窗口，如</span>
				<span lang="EN-US">SQL Window</span>
				<span style="font-family: 宋体;">，</span>
				<span lang="EN-US">Command Window</span>
				<span style="font-family: 宋体;">和</span>
				<span lang="EN-US">Porgram Window</span>
				<span style="font-family: 宋体;">，右键点击某个对象名称，会弹出一个包含操作对象命令的菜单，我们这里称之为右键菜单。如下图：</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">对象类型可以是表，视图，同义词，存储过程和函数等。根据对象类型的不同，弹出的菜单也有区别。表和视图有</span>
				<span lang="EN-US">View, Edit, Rename, Drop, Query data </span>
				<span style="font-family: 宋体;">和</span>
				<span lang="EN-US">Edit data</span>
				<span style="font-family: 宋体;">等功能。</span>
				<span lang="EN-US">View</span>
				<span style="font-family: 宋体;">和</span>
				<span lang="EN-US">Edit</span>
				<span style="font-family: 宋体;">分别是查看和修改表的结构信息，如字段，主键，索引和约束等。</span>
				<span lang="EN-US">Query data</span>
				<span style="font-family: 宋体;">相当于新打开一个窗口，并执行</span>
				<span lang="EN-US">select * from </span>
				<span style="font-family: 宋体;">表。</span>
				<span lang="EN-US">Edit data</span>
				<span style="font-family: 宋体;">相当于新打开一个窗口，并执行</span>
				<span lang="EN-US">select * from </span>
				<span style="font-family: 宋体;">表</span>
				<span lang="EN-US"> for update</span>
				<span style="font-family: 宋体;">。存储过程和函数有</span>
				<span lang="EN-US">Test</span>
				<span style="font-family: 宋体;">功能，选中后可以进入调试状态。</span>
		</p>
		<p>
				<span style="font-family: 宋体;">有时由于</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">识别错误，右键点击对象并不能出来正确的菜单，可以在对象所在的</span>
				<span lang="EN-US">DDL</span>
				<span style="font-family: 宋体;">或</span>
				<span lang="EN-US">DML</span>
				<span style="font-family: 宋体;">语句的前面，加上分号，这样</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">就能正确的判断出对象的类型</span>
		</p>
		<p style="text-indent: -18pt;">
				<span lang="EN-US">
						<span>2，<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"></span></span>
				</span>
				<span lang="EN-US">Select for Update</span>
		</p>
		<p>
				<span style="font-family: 宋体;">有时我们需要把一些数据导入数据库中，如果用</span>
				<span lang="EN-US">UE</span>
				<span style="font-family: 宋体;">拼</span>
				<span lang="EN-US">Insert</span>
				<span style="font-family: 宋体;">语句，会比较麻烦，而且操作性不强。</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">的</span>
				<span lang="EN-US">SQL Window</span>
				<span style="font-family: 宋体;">可以查询，新增，修改和删除表的内容。查询自不必说，而新增，删除和修改，只需在</span>
				<span lang="EN-US">select</span>
				<span style="font-family: 宋体;">语句后加入</span>
				<span lang="EN-US">for update</span>
				<span style="font-family: 宋体;">，对表进行行级锁定，然后点击窗口的锁型图标，即可进入编辑状态。</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">下面介绍一下如何从</span>
				<span lang="EN-US">Excel</span>
				<span style="font-family: 宋体;">中提取文本插入到数据库中</span>
		</p>
		<p>
				<span style="font-family: 宋体;">我们的</span>
				<span lang="EN-US">Excel</span>
				<span style="font-family: 宋体;">文件中有三列：</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">在数据库中建立临时表：</span>
		</p>
		<p>
				<span lang="EN-US">create table t1 (cino varchar2(100), contno varchar2(100), loanno varchar2(100))</span>
		</p>
		<p>
				<span style="font-family: 宋体;">然后在</span>
				<span lang="EN-US">SQL Window</span>
				<span style="font-family: 宋体;">中输入</span>
				<span lang="EN-US">select t1 for update</span>
				<span style="font-family: 宋体;">，并点击锁型鼠标，进入编辑状态：</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">用鼠标点击第一行的输入窗口，这时</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">会死锁几秒钟，然后可以见到光标在第一行的输入框中闪动，用鼠标把</span>
				<span lang="EN-US">CINO, CONTNO, LOANNO</span>
				<span style="font-family: 宋体;">选中：</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">进入</span>
				<span lang="EN-US">Excel</span>
				<span style="font-family: 宋体;">中，把需要插入数据库的内容选中，然后切换到</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">，按</span>
				<span lang="EN-US">Ctrl + V</span>
				<span style="font-family: 宋体;">：</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">点击</span>
				<span style="font-family: 宋体;">&#8730;</span>
				<span style="font-family: 宋体;">，然后再点击</span>
				<span lang="EN-US">Commit</span>
				<span style="font-family: 宋体;">按钮，则数据提交到表</span>
				<span lang="EN-US">t1</span>
				<span style="font-family: 宋体;">中，执行</span>
				<span lang="EN-US">select * from t1</span>
				<span style="font-family: 宋体;">可以看到内容：</span>
		</p>
		<p style="text-indent: -18pt;">
				<span lang="EN-US">
						<span>3，<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"></span></span>
				</span>
				<span lang="EN-US">PL/SQL Beautifier</span>
		</p>
		<p>
				<span lang="EN-US">PLD 6</span>
				<span style="font-family: 宋体;">以上版本有对</span>
				<span lang="EN-US">DML</span>
				<span style="font-family: 宋体;">代码格式化的功能。在</span>
				<span lang="EN-US">SQL Window</span>
				<span style="font-family: 宋体;">或</span>
				<span lang="EN-US">Program Window</span>
				<span style="font-family: 宋体;">中选中部分代码（如果不选则对整个窗口的代码操作），在菜单中选</span>
				<span lang="EN-US">Edit </span>
				<span style="font-family: Wingdings;" lang="EN-US">
						<span>&#224;</span>
				</span>
				<span lang="EN-US"> PL/SQL Beautifier</span>
				<span style="font-family: 宋体;">，得到格式化的代码。对于非法的</span>
				<span lang="EN-US">DML</span>
				<span style="font-family: 宋体;">语句或</span>
				<span lang="EN-US">DDL</span>
				<span style="font-family: 宋体;">语句，</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">将会在下方状态栏提示</span>
				<span lang="EN-US">PL/SQL Beautifier could not parse text</span>
				<span style="font-family: 宋体;">。</span>
		</p>
		<p>
				<span style="font-family: 宋体;">在缺省的状态下，</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">会把</span>
				<span lang="EN-US">DML</span>
				<span style="font-family: 宋体;">语句的每一个字段都排在单独的一行，这样不方便查看。在菜单中选</span>
				<span lang="EN-US">Edit </span>
				<span style="font-family: Wingdings;" lang="EN-US">
						<span>&#224;</span>
				</span>
				<span lang="EN-US"> PL/SQL Beautifier Options</span>
				<span style="font-family: 宋体;">，进入</span>
				<span lang="EN-US">Preferences</span>
				<span style="font-family: 宋体;">窗口，选择</span>
				<span lang="EN-US">Edit</span>
				<span style="font-family: 宋体;">，进入配置文件编辑界面：</span>
		</p>
		<p>
		</p>
		<p>
				<span style="font-family: 宋体;">在标签栏选</span>
				<span lang="EN-US">DML</span>
				<span style="font-family: 宋体;">，在窗口中部的</span>
				<span lang="EN-US">Select, Insert</span>
				<span style="font-family: 宋体;">和</span>
				<span lang="EN-US">Update</span>
				<span style="font-family: 宋体;">组框中把</span>
				<span lang="EN-US">Fit</span>
				<span style="font-family: 宋体;">选中，然后点击</span>
				<span lang="EN-US">Save</span>
				<span style="font-family: 宋体;">，把配置文件保存到</span>
				<span lang="EN-US">PLD</span>
				<span style="font-family: 宋体;">的安装目录下，点击</span>
				<span lang="EN-US">Close</span>
				<span style="font-family: 宋体;">关闭。在</span>
				<span lang="EN-US">Rules file</span>
				<span style="font-family: 宋体;">中输入配置文件所在位置，点击</span>
				<span lang="EN-US">OK</span>
				<span style="font-family: 宋体;">，完成配置文件切换。这时再对代码进行格式化，就可以使每一个字段尽可能的在一行上了。</span>
		</p>
		<p style="text-indent: -18pt;">
				<span lang="EN-US">
						<span>4，<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"></span></span>
				</span>
				<span lang="EN-US">TNS Names</span>
		</p>
		<p>
				<span style="font-family: 宋体;">菜单</span>
				<span lang="EN-US">Help </span>
				<span style="font-family: Wingdings;" lang="EN-US">
						<span>&#224;</span>
				</span>
				<span lang="EN-US"> Support Info </span>
				<span style="font-family: Wingdings;" lang="EN-US">
						<span>&#224;</span>
				</span>
				<span lang="EN-US"> TNS Names</span>
				<span style="font-family: 宋体;">，可以查看</span>
				<span lang="EN-US">Oracle</span>
				<span style="font-family: 宋体;">的</span>
				<span lang="EN-US">tnsnames.ora</span>
				<span style="font-family: 宋体;">。</span>
		</p>
		<p style="text-indent: -18pt;">
				<span lang="EN-US">
						<span>5，<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"></span></span>
				</span>
				<span lang="EN-US">Copy to Excel</span>
		</p>
		<p>
				<span style="font-family: 宋体;">在</span>
				<span lang="EN-US">SQL Window</span>
				<span style="font-family: 宋体;">中执行</span>
				<span lang="EN-US">Select</span>
				<span style="font-family: 宋体;">语句，在结果出来以后，右键点击下面的数据区，选择</span>
				<span lang="EN-US">Copy to Excel</span>
				<span style="font-family: 宋体;">，可以把数据区的记录原样拷贝到</span>
				<span lang="EN-US">Excel</span>
				<span style="font-family: 宋体;">中。但有两点需要注意：一，</span>
				<span lang="EN-US">field</span>
				<span style="font-family: 宋体;">中不能以</span>
				<span lang="EN-US">=</span>
				<span style="font-family: 宋体;">开始，否则</span>
				<span lang="EN-US">Excel</span>
				<span style="font-family: 宋体;">会误认为是函数；二，数字不要超过</span>
				<span lang="EN-US">17</span>
				<span style="font-family: 宋体;">位，否则后面的位数将会置为</span>
				<span lang="EN-US">0</span>
				<span style="font-family: 宋体;">，但可以通过在数字前加&#8216;来使</span>
				<span lang="EN-US">Excel</span>
				<span style="font-family: 宋体;">认为该</span>
				<span lang="EN-US">field</span>
				<span style="font-family: 宋体;">是文本，同时对于数据库中</span>
				<span lang="EN-US">Numbe</span>
				<span style="font-family: 宋体;">类型的字段，最好用</span>
				<span lang="EN-US">to_char</span>
				<span style="font-family: 宋体;">输出，不然可能会显示不正常</span></p><p><span style="font-family: 宋体;"><a href="http://www.imaiyi.com/">爱卖艺</a><br /></span>
		</p><img src ="http://www.blogjava.net/joeyeezhang/aggbug/79275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joeyeezhang/" target="_blank">joeyeezhang</a> 2006-11-05 22:41 <a href="http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pl/sql简介</title><link>http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79273.html</link><dc:creator>joeyeezhang</dc:creator><author>joeyeezhang</author><pubDate>Sun, 05 Nov 2006 14:29:00 GMT</pubDate><guid>http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79273.html</guid><wfw:comment>http://www.blogjava.net/joeyeezhang/comments/79273.html</wfw:comment><comments>http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joeyeezhang/comments/commentRss/79273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joeyeezhang/services/trackbacks/79273.html</trackback:ping><description><![CDATA[
		<p align="justify">
				<font face="Times New Roman">
						<font color="#000080" size="4">
								<strong>1.1 </strong>
						</font>
						<a name="111">
								<font color="#000080" size="4">
										<strong>PL/SQL</strong>
								</font>
						</a>
				</font>
				<font color="#000080" size="4">
						<strong>简介</strong>
				</font>
				<font face="Times New Roman">
				</font>
		</p>
		<p align="justify">
				<font size="4">
						<font face="Times New Roman">  <font face="宋体"></font></font>
						<font face="Verdana">PL/SQL是ORACLE的过程化语言，包括一整套的数据类型、条件结构、循环结构和异常处理结构，PL/SQL可以执行SQL语句，SQL语句中也可以使用PL/SQL函数。</font>
				</font>
		</p>
		<p align="justify">
				<font face="Verdana" size="4">
				</font> </p>
		<p align="justify">
				<font color="#000080" size="4">
						<strong>1.2 </strong>
				</font>
				<a name="222">
						<font color="#000080" size="4">
								<strong>创建<font face="Times New Roman">PL/SQL</font>程序块</strong>
						</font>
				</a>
				<font face="Times New Roman">
				</font>
		</p>
		<p align="justify">
				<font face="Times New Roman" size="4">DECLARE<br /></font>
				<font face="宋体, MS Song" size="4">…<br /></font>
				<font face="Times New Roman" size="4">BEGIN<br /></font>
				<font face="宋体, MS Song" size="4">…<br /></font>
				<font face="Times New Roman" size="4">EXCEPTION<br />END;</font>
		</p>
		<p align="justify">
				<font face="Times New Roman" size="4">
				</font> </p>
		<p align="justify">
				<font face="Times New Roman" color="#000080" size="4">
						<strong>1.3 </strong>
				</font>
				<a name="333">
						<strong>
								<font color="#000080">
										<font size="4">
												<font face="Times New Roman">PL/SQL</font>数据类型</font>
								</font>
						</strong>
				</a>
				<font size="4">
				</font>
		</p>
		<table cellspacing="0" cellpadding="0" width="576" border="1">
				<tbody>
						<tr>
								<td valign="top" width="140">
										<p align="justify">
												<font size="4">名称</font>
										</p>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">类型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">说明</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">能存放整数值和实数值，并且可以定义精度和取值范围</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">BINARY_INTEGER</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">可存储带符号整数，为整数计算优化性能</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">DEC</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font face="宋体, MS Song" size="4">的子类型，小数</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">DOUBLE PRECISION</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font face="宋体, MS Song" size="4">的子类型，高精度实数</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">INTEGER</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font face="宋体, MS Song" size="4">的子类型，整数</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">INT</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font face="宋体, MS Song" size="4">的子类型，整数</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMERIC</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font size="4">
												<font face="宋体, MS Song">的子类型，与</font>
												<font face="Times New Roman">NUMBER</font>
												<font face="宋体, MS Song">等价</font>
										</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">REAL</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font size="4">
												<font face="宋体, MS Song">的子类型，与</font>
												<font face="Times New Roman">NUMBER</font>
												<font face="宋体, MS Song">等价</font>
										</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">SMALLINT</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">数字型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NUMBER</font>
												</p>
										</font>
										<font size="4">
												<font face="宋体, MS Song">的子类型，取值范围比</font>
												<font face="Times New Roman">INTEGER</font>
												<font face="宋体, MS Song">小</font>
										</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">VARCHAR2</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">字符型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">存放可变长字符串，有最大长度</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">CHAR</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">字符型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">定长字符串</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">LONG</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">字符型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">变长字符串，最大长度可达<font face="Times New Roman">32,767</font></font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">DATE</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">日期型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">以数据库相同的格式存放日期值</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">BOOLEAN</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<p align="justify">
												<font size="4">布尔型</font>
										</p>
								</td>
								<td valign="top" width="359">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">TRUE OR FALSE</font>
												</p>
										</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="140">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ROWID</font>
												</p>
										</font>
								</td>
								<td valign="top" width="71">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ROWID</font>
												</p>
										</font>
								</td>
								<td valign="top" width="359">
										<p align="justify">
												<font size="4">存放数据库的行号</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p align="justify">
				<font size="4">例子：<br /></font>
				<font face="Times New Roman" size="4">DECLARE<br />    ORDER_NO NUMBER(3);<br />    CUST_NAME VARCHAR2(20);<br />    ORDER_DATE DATE;<br />    EMP_NO INTEGER:=25;<br />    PI CONSTANT NUMBER:=3.1416;<br />BEGIN<br />  NULL;<br />END;</font>
		</p>
		<p align="justify">
				<font face="Times New Roman" size="4">
				</font> </p>
		<p align="justify">
				<strong>
						<font color="#000080" size="4">1.4 </font>
				</strong>
				<a name="444">
						<strong>
								<font color="#000080" size="4">处理<font face="Times New Roman">PL/SQL</font>的异常</font>
						</strong>
				</a>
		</p>
		<p align="justify">
				<font face="Times New Roman" size="4">
				</font>
				<font face="黑体"> </font>
		</p>
		<p align="justify">
				<strong>
						<font color="#000080">
								<font size="4">
										<font face="Arial">1.4.1 PL/SQL</font>
										<font face="Verdana">的异常</font>
								</font>
						</font>
				</strong>
		</p>
		<p align="justify">
				<font size="4">例如：<br /></font>
				<font size="4">
						<font face="Times New Roman">DECLARE<br />    X NUMBER;<br />BEGIN<br />    X:= 'yyyy';--Error Here<br /><b>EXCEPTION   WHEN</b> VALUE_ERROR THEN<br />    DBMS_OUTPUT.PUT_LINE('EXCEPTION HANDED');<br /><b>END;</b></font>
						<font face="Times New Roman">
						</font>
				</font>
		</p>
		<p align="justify">
				<font size="4">实现技术：<br /></font>
				<font size="4">
						<font face="Times New Roman">EXCEPTION WHEN first_exception THEN<br /></font>…<br /></font>
				<font size="4">
						<font face="Times New Roman">WHEN second_exception THEN<br /></font>…<br /></font>
				<font size="4">
						<font face="Times New Roman">WHEN OTHERS THEN <br />/*THERS</font>异常<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(7);" onmouseover="kwE(event,7);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://211.100.30.165/search/?key=处理器','_blank');" onmouseout="kwL(event);" target="_blank">处理器</a></nobr>必须排在最后，它处理所有没有明确列出的异常。</font>
				<font size="4">
						<font face="Times New Roman">*/<br /></font>…<br /><font face="Times New Roman">END;</font></font>
		</p>
		<p align="justify">
				<strong>
						<font size="4">
						</font>
				</strong>
		</p>
		<p align="left">
				<font color="#000080" size="4">
						<strong>1.4.2 预定义异常</strong>
				</font>
		</p>
		<p align="justify">
		</p>
		<table cellspacing="0" cellpadding="0" width="568" border="1">
				<tbody>
						<tr>
								<td valign="top" width="39%">
										<p align="center">
												<font size="4">异常名称</font>
										</p>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="center">
														<font size="4">ORACLE</font>
												</p>
										</font>
										<font face="宋体, MS Song" size="4">错误</font>
								</td>
								<td valign="top" width="42%">
										<p align="center">
												<font size="4">说明</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">CURSOR_ALREADY_OPEN</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-6511</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">试图打开一个已打开的光标</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">DUP_VAL_ON_INDEX</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-0001</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">试图破坏一个唯一性限制</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">INVALID_CURSOR</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1001</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">试图使用一个无效的光标</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">INVALID_NUMBER</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1722</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">试图对非数字值进行数字操作</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">LOGIN_DENIED</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1017</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">无效的用户名或者口令</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NO_DATA_FOUND</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1403</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">查询未找到数据</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">NOT_LOGGED_ON</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1012</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">还未连接就试图数据库操作</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">PROGRAM_ERROR</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-6501</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">内部错误</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ROWTYPE_MISMATCH</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-6504</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">主变量和光标的类型不兼容</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">STORAGE_ERROR</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-6500</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">内部错误</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">TIMEOUT_ON_RESOURCE</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-0051</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">发生超时</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">TOO_MANY_ROWS</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1422</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">SELECT INTD</font>
												</p>
										</font>
										<font face="宋体, MS Song" size="4">命令返回的多行</font>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">TRANSACTION_BACKED_OUT</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-006</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">由于死锁提交被退回</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">VALUE_ERROR</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-6502</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">转换或者裁剪错误</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="39%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ZERO_DIVIDE</font>
												</p>
										</font>
								</td>
								<td valign="top" width="19%">
										<font face="Times New Roman">
												<p align="justify">
														<font size="4">ORA-1476</font>
												</p>
										</font>
								</td>
								<td valign="top" width="42%">
										<p align="justify">
												<font size="4">试图被零除</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p align="justify">
				<font size="4">
				</font> </p>
		<font face="Times New Roman">
				<p align="justify">
						<font face="黑体">
								<font color="#000080">
										<font size="4">
												<strong>1.4.3</strong>
										</font>
								</font>
								<a name="_Toc439229533">
										<font color="#000080" size="4">自定义异常处理</font>
								</a>
						</font>
						<font face="Times New Roman">
						</font>
				</p>
				<p align="justify">
				</p>
		</font>
		<font size="4">
				<font face="Times New Roman">DECLARE<br />    BAD_ROWID EXCEPTION;<br />    X ROWID;<br />PRAGMA EXCEPTION_INIT(BAD_ROWID,-01445);<br />BEGIN<br />    SELECT ROWID INTO X FROM TAB<br />    WHERE ROWNUM=1;<br />EXCEPTION WHEN BAD_ROWID THEN<br />    DBMS_OUTPUT.PUT_LINE('CANNOT QUERY ROWID FROM THIS VIEW');<br />END;<br /><br /></font>
				<font face="宋体, MS Song">    注意：</font>
				<font face="Times New Roman">-01445 </font>
				<font face="宋体, MS Song">因为</font>
				<font face="Times New Roman">PRAGMA EXCEPTION_INIT</font>
				<font face="宋体, MS Song">命令把这个变量</font>
				<font face="Times New Roman">(-01455)</font>
		</font>
		<font size="4">
				<font face="宋体, MS Song">连接到<br />这个</font>
				<font face="Times New Roman">ORACLE</font>
		</font>
		<font face="宋体, MS Song" size="4">错误，该语句的语法如下：<br />    </font>
		<font size="4">
				<font face="Times New Roman">PRAGMA EXCEPTION_INIT(exception_name, error_number);<br /></font>
				<font face="宋体, MS Song">其中</font>
				<font face="Times New Roman">error_number</font>
				<font face="宋体, MS Song">是负数，因为错误号被认为负数，当定义错误时记住使用负号</font>
		</font>
		<p align="justify">
				<strong>
						<font face="Times New Roman" size="4">
						</font>
				</strong>
		</p>
		<p align="justify">
				<font face="宋体, MS Song" color="#000080" size="4">
						<strong>1.4.4 </strong>
				</font>
				<a name="_Toc439229534">
						<font face="宋体, MS Song" color="#000080" size="4">
								<strong>自定义异常</strong>
						</font>
				</a>
		</p>
		<p align="justify">
				<font size="4">
						<font face="宋体, MS Song">    异常不一定必须是</font>
						<font face="Times New Roman">oracle</font>
				</font>
				<font face="宋体, MS Song" size="4">返回的系统错误，用户可以在自己的应用程序中创<br />建可触发及可处理的自定义异常<br /></font>
				<font size="4">
						<font face="Times New Roman">DECLARE<br />    SALARY_CODE VARCHAR2(1);<br />    INVALID_SALARY_CODE EXCEPTION;<br />BEGIN<br />    SALARY_CODE:='X';<br />    IF SALARY_CODE NOT IN('A', 'B', 'C') THEN<br />    RAISE INVALID_SALARY_CODE;<br />    END IF;<br />EXCEPTION WHEN INVALID_SALARY_CODE THEN<br />    DBMS_OUTPUT.PUT_LINE('INVALID SALARY CODE');<br />END;</font>
						<br />
				</font>
				<font face="Times New Roman">
						<strong>
								<font size="4"> </font>
						</strong>
				</font>
		</p>
		<p align="justify">
				<font face="宋体, MS Song" color="#000080" size="4">
						<strong>1.5 </strong>
				</font>
				<a name="555">
						<font color="#000080">
								<strong>
										<font size="4">
												<font face="宋体, MS Song">在</font>
												<font face="Times New Roman">PL/SQL</font>
												<font face="宋体, MS Song">中单条记录的查询</font>
										</font>
								</strong>
						</font>
				</a>
		</p>
		<p align="justify">
				<font face="宋体, MS Song" size="4">    在PL/SQL内，有时在没有定义显式光标的情况下需要查询单条记录，并把记录的数据赋给变量。<br />DECLARE<br />    ln_dno NUMBER;<br />    lvs_dname VARCHAR2(40);<br />BEGIN<br />    SELECT DEPT_NO,DEPT_NAME<br />        INTO ln_dno,lvs_dname<br />    FROM dept<br />    WHERE DEPT_NO=1;<br />    DBMS_OUTPUT.PUT_LINE(TO_CHAR(ln_dno)||'.'||lvs_dname);<br />EXCEPTION WHEN NO_DATA_FOUND THEN<br />    DBMS_OUTPUT.PUT_LINE('NO DATA_FOUND<b>'</b>)</font>
				<font face="宋体, MS Song">
						<font size="4">
								<b>;<br /></b>    WHEN TOO_MANY_ROWS THEN<br />    DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');<br />END;</font>
				</font>
		</p>
		<p align="justify">
				<font size="4">
				</font> </p>
		<p align="justify">
				<b>
						<font color="#000080" size="4">1.6 </font>
						<a name="666">
								<font color="#000080" size="4">用光标查询多条记录</font>
						</a>
				</b>
				<font face="Times New Roman">
				</font>
		</p>
		<p align="justify">
				<font face="宋体, MS Song" size="4">      光标（CURSOR）是指向一个称为上下文相关区的区域的指针，这个区域在<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(8);" onmouseover="kwE(event,8);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://211.100.30.165/search/?key=服务器','_blank');" onmouseout="kwL(event);" target="_blank">服务器</a></nobr>的处理过程全局区（PGA）内，当服务器上执行了一个查询后，查询返回的记录集存放在上下文相关区，通过光标上的操作可以把这些记录检索到客户端的应用程序。</font>
		</p>
		<p align="justify">
				<font size="4">
				</font> </p>
		<p align="justify">
				<font face="黑体">
						<font color="#000080">
								<font size="4">
										<strong>1.6.1</strong>
								</font>
						</font>
						<a name="_Toc439229537">
								<font color="#000080" size="4">使用光标的基本方法</font>
						</a>
				</font>
				<font face="Times New Roman">
				</font>
		</p>
		<p align="justify">
				<font size="4">DECLARE<br />    CURSOR C1 IS SELECT VIEW_NAME FROM ALL_VIEWS<br />        WHERE ROWNUM&lt;=10<br />        ORDER BY VIEW_NAME;<br />    VNAME VARCHAR2(40);<br />BEGIN<br />    OPEN C1;<br />    FETCH C1 INTO VNAME;<br />    WHILE C1%FOUND LOOP<br />        DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT)||' '||VNAME);<br />        FETCH C1 INTO VNAME;<br />    END LOOP;<br />END;</font>
		</p>
		<p align="justify">
		</p>
		<table cellspacing="0" cellpadding="0" width="568" border="1">
				<tbody>
						<tr>
								<td valign="top" width="20%">
										<p align="center">
												<font size="4">属性</font>
										</p>
								</td>
								<td valign="top" width="80%">
										<p align="center">
												<font size="4">含量</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="20%">
										<p align="justify">
												<font size="4">%FOUND</font>
										</p>
								</td>
								<td valign="top" width="80%">
										<p align="justify">
												<font size="4">布尔型属性，当最近一次该记录时成功返回，则值为TRUE</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="20%">
										<p align="justify">
												<font size="4">%NOTFOUND</font>
										</p>
								</td>
								<td valign="top" width="80%">
										<p align="justify">
												<font size="4">布尔型属性，它的值总与%FOUND属性的值相反</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="20%">
										<p align="justify">
												<font size="4">%ISOPEN</font>
										</p>
								</td>
								<td valign="top" width="80%">
										<p align="justify">
												<font size="4">布尔型属性，当光标是打开时返回TRUE</font>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top" width="20%">
										<p align="justify">
												<font size="4">%ROWCOUNT</font>
										</p>
								</td>
								<td valign="top" width="80%">
										<p align="justify">
												<font size="4">数字型属性，返回已从光标中读取的记录数</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>
				<font face="黑体">
						<strong>
								<font size="4">　</font>
						</strong>
				</font>
		</p>
		<p align="justify">
				<font face="黑体">
						<font color="#000080">
								<font size="4">
										<strong>1.6.2</strong>
								</font>
						</font>
						<a name="_Toc439229538">
								<font color="#000080" size="4">使用光标</font>
						</a>
				</font>
				<font color="#000080">
						<font size="4">
								<font face="Arial">
										<strong>FOR</strong>
								</font>
								<font face="黑体">循环</font>
						</font>
				</font>
				<font face="Times New Roman">
				</font>
		</p>
		<p align="justify">
				<font size="4">DECLARE<br />    CURSOR C1 IS<br />    SELECT VIEW_NAME<br />        FROM ALL_VIEWS<br />        WHERE ROWNUM&lt;=10<br />        ORDER BY VIEW_NAME;<br />BEGIN<br />    FOR I IN C1 LOOP<br />        DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);<br />    END LOOP;<br />END LOOP;<br />EXCEPTION WHEN OTHERS THEN<br />    NULL;<br />END;</font>
		</p>
		<p align="justify">
				<font size="4">
				</font> </p>
		<font face="黑体">
				<p align="justify">
				</p>
		</font>
		<font face="黑体">
				<font color="#000080" size="4">
						<strong>1.6.3 </strong>
				</font>
				<a name="_Toc439229539">
						<font color="#000080" size="4">带参数的光标</font>
				</a>
		</font>
		<font face="Times New Roman">
		</font>
		<p>
				<font size="4">DECLARE<br />    CURSOR C1(VIEW_PATTERN VARCHAR2) IS<br />        SELECT VIEW_NAME<br />        FROM ALL_VIEWS<br />        WHERE VIEW_NAME LIKE VIEW_PATTERN||'%' AND<br />        ROWNUM&lt;=10<br />        ORDER BY VIEW_NAME;<br />    VNAME VARCHAR2(40);<br />BEGIN<br />    FOR I IN C1('USER_AR') LOOP<br />        DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);<br />    END LOOP;<br />    DBMS_OUTPUT.PUT_LINE();<br />    FOR I IN C1('USER') LOOP<br />        DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);<br />    END LOOP;<br />EXCEPTION WHEN OTHERS THEN<br />    DBMS_OUTPUT.PUT_LINE('AAA');<br />END;</font>
		</p>
		<p>
				<font size="4">
				</font> </p>
		<p>
				<font color="#000080" size="4">
						<strong>1.7 </strong>
				</font>
				<a name="777">
						<font color="#000080" size="4">
								<strong>创建代表数据库记录和列的变量</strong>
						</font>
				</a>
		</p>
		<p align="justify">
				<font size="4">变量名 基表名<font face="Times New Roman">.</font>列名</font>
				<font size="4">
						<font face="Times New Roman">%TYPE<br />DECLARE<br />    D_NO DEPT.DEPT_NO%TYPE;<br />    D_NAME DEPT.DEPT_NAME%TYPE;<br />BEGIN<br />    SELECT DEPT_NO,DEPT_NAME INTO D_NO,D_NAME<br />    FROM DEPT;<br />    DBMS_OUTPUT.PUT_LINE(TO_CHAR(D_NO));<br />EXCEPTION WHEN NO_DATA_FOUND THEN<br />    NULL;<br />END;<br /><br /></font>变量名 基表名</font>
				<font size="4">
						<font face="Times New Roman">%ROWTYPE<br />DECLARE<br />    D VEQU12%ROWTYPE;<br />BEGIN<br />    SELECT ASSET12ID,ASSET12NAME<br />        INTO D.ASSET12ID, D.ASSET12NAME<br />        FROM VEQU12;<br />    DBMS_OUTPUT.PUT_LINE(D.ASSET12ID);<br />EXCEPTION<br />WHEN NO_DATA_FOUND THEN<br />    NULL;<br />WHEN TOO_MANY_ROWS THEN<br />    DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');<br />END;<br /></font>说明：<br /><font face="Times New Roman">    </font>当用户要创建一个变量来表示一个基表列或者要创建多个变量来代表一整条记录时，可以实际使用<font face="Times New Roman">%TYPE</font>属性和<font face="Times New Roman">%ROWTYPE</font>属性，使用<font face="Times New Roman">%TYPE</font>属性和<font face="Times New Roman">%ROWTYPE</font>属性可以保证当基表的结构或者其中某列的数据类型改变了时，用户的<font face="Times New Roman">PL/SQL</font>代码仍可正常<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(9);" onmouseover="kwE(event,9);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://211.100.30.165/search/?key=工作','_blank');" onmouseout="kwL(event);" target="_blank">工作</a></nobr>。</font>
		</p>
		<p align="justify">
				<font size="4">
						<font face="Times New Roman"> </font>
				</font>
		</p>
		<b>
				<p align="justify">
						<font color="#000080" size="4">1.8 </font>
						<a name="999">
								<font color="#000080" size="4">怎样用<font face="Times New Roman">PL/SQL</font>表实现数组功能</font>
						</a>
				</p>
		</b>
		<font face="Times New Roman">
		</font>
		<p align="justify">
				<font size="4">    PL/SQL表与其他过程化语言(如C语言)的一维数组类似。实现PL/SQL表需要创建一个数据类型并另外进行变量说明。<br />    Type &lt;类型名&gt; Is<br />    Table Of &lt;数据类型&gt;<br />    Index by Binary_Integer;<br />以下为一个例子：<br />Declare<br />    Type Array_type is<br />        Table Of Number<br />        Index by Binary_Integer;<br />    My_Array Array_type;<br />Begin<br />    For I In 1..10 Loop<br />        My_Array(I) := I*2;<br />    End Loop;<br />    For I In 1..10 Loop<br />        Dbms_Output.Put_line(To_char(My_Array(I)));<br />    End Loop;<br />End;</font>
		</p>
<img src ="http://www.blogjava.net/joeyeezhang/aggbug/79273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joeyeezhang/" target="_blank">joeyeezhang</a> 2006-11-05 22:29 <a href="http://www.blogjava.net/joeyeezhang/archive/2006/11/05/79273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle常用函数</title><link>http://www.blogjava.net/joeyeezhang/archive/2006/11/04/79095.html</link><dc:creator>joeyeezhang</dc:creator><author>joeyeezhang</author><pubDate>Sat, 04 Nov 2006 11:16:00 GMT</pubDate><guid>http://www.blogjava.net/joeyeezhang/archive/2006/11/04/79095.html</guid><wfw:comment>http://www.blogjava.net/joeyeezhang/comments/79095.html</wfw:comment><comments>http://www.blogjava.net/joeyeezhang/archive/2006/11/04/79095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joeyeezhang/comments/commentRss/79095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joeyeezhang/services/trackbacks/79095.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">ORACLE内置函数大全 </h2>                                       
<p></p><p align="center"><font size="2"><strong>ORACLE内置函数大全</strong></font></p><p><font size="2">SQL中的单记录函数<br />1.ASCII<br />返回与指定的字符对应的十进制数;<br />SQL&gt; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;</font></p><p><font size="2">        A         A      ZERO     SPACE<br />--------- --------- --------- ---------<br />       65        97        48        32</font></p><p><br /><font size="2">2.CHR<br />给出整数,返回对应的字符;<br />SQL&gt; select chr(54740) zhao,chr(65) chr65 from dual;</font></p><p><font size="2">ZH C<br />-- -<br />赵 A</font></p><p><font size="2">3.CONCAT<br />连接两个字符串;<br />SQL&gt; select concat('010-','88888888')||'转23'  高乾竞电话 from dual;</font></p><p><font size="2">高乾竞电话<br />----------------<br />010-88888888转23</font></p><p><font size="2">4.INITCAP<br />返回字符串并将字符串的第一个字母变为大写;<br />SQL&gt; select initcap('smith') upp from dual;</font></p><p><font size="2">UPP<br />-----<br />Smith</font></p><p><br /><font size="2">5.INSTR(C1,C2,I,J)<br />在一个字符串中搜索指定的字符,返回发现指定的字符的位置;<br />C1    被搜索的字符串<br />C2    希望搜索的字符串<br />I     搜索的开始位置,默认为1<br />J     出现的位置,默认为1<br />SQL&gt; select instr('oracle traning','ra',1,2) instring from dual;</font></p><p><font size="2"> INSTRING<br />---------<br />        9</font></p><p><br /><font size="2">6.LENGTH<br />返回字符串的长度;<br />SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;</font></p><p><font size="2">NAME   LENGTH(NAME) ADDR             LENGTH(ADDR)       SAL LENGTH(TO_CHAR(SAL))<br />------ ------------ ---------------- ------------ --------- --------------------<br />高乾竞            3 北京市海锭区                6   9999.99                    7</font></p><p><font size="2"></font> </p><p><font size="2">7.LOWER<br />返回字符串,并将所有的字符小写<br />SQL&gt; select lower('AaBbCcDd')AaBbCcDd from dual;</font></p><p><font size="2">AABBCCDD<br />--------<br />aabbccdd</font></p><p><br /><font size="2">8.UPPER<br />返回字符串,并将所有的字符大写<br />SQL&gt; select upper('AaBbCcDd') upper from dual;</font></p><p><font size="2">UPPER<br />--------<br />AABBCCDD</font></p><p><font size="2"></font> </p><p><font size="2">9.RPAD和LPAD(粘贴字符)<br />RPAD  在列的右边粘贴字符<br />LPAD  在列的左边粘贴字符<br />SQL&gt; select lpad(rpad('gao',10,'*'),17,'*')from dual;</font></p><p><font size="2">LPAD(RPAD('GAO',1<br />-----------------<br />*******gao*******<br />不够字符则用*来填满</font></p><p><br /><font size="2">10.LTRIM和RTRIM<br />LTRIM  删除左边出现的字符串<br />RTRIM  删除右边出现的字符串<br />SQL&gt; select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;</font></p><p><font size="2">LTRIM(RTRIM('<br />-------------<br />gao qian jing</font></p><p><br /><font size="2">11.SUBSTR(string,start,count)<br />取子字符串,从start开始,取count个<br />SQL&gt; select substr('13088888888',3,8) from dual;</font></p><p><font size="2">SUBSTR('<br />--------<br />08888888</font></p><p><br /><font size="2">12.REPLACE('string','s1','s2')<br />string   希望被替换的字符或变量 <br />s1       被替换的字符串<br />s2       要替换的字符串<br />SQL&gt; select replace('he love you','he','i') from dual;</font></p><p><font size="2">REPLACE('H<br />----------<br />i love you</font></p><p><br /><font size="2">13.SOUNDEX<br />返回一个与给定的字符串读音相同的字符串<br />SQL&gt; create table table1(xm varchar(8));<br />SQL&gt; insert into table1 values('weather');<br />SQL&gt; insert into table1 values('wether');<br />SQL&gt; insert into table1 values('gao');</font></p><p><font size="2">SQL&gt; select xm from table1 where soundex(xm)=soundex('weather');</font></p><p><font size="2">XM<br />--------<br />weather<br />wether</font></p><p><br /><font size="2">14.TRIM('s' from 'string')<br />LEADING   剪掉前面的字符<br />TRAILING  剪掉后面的字符<br />如果不指定,默认为空格符 </font></p><p><font size="2">15.ABS<br />返回指定值的绝对值<br />SQL&gt; select abs(100),abs(-100) from dual;</font></p><p><font size="2"> ABS(100) ABS(-100)<br />--------- ---------<br />      100       100</font></p><p><br /><font size="2">16.ACOS<br />给出反余弦的值<br />SQL&gt; select acos(-1) from dual;</font></p><p><font size="2"> ACOS(-1)<br />---------<br />3.1415927</font></p><p><br /><font size="2">17.ASIN<br />给出反正弦的值<br />SQL&gt; select asin(0.5) from dual;</font></p><p><font size="2">ASIN(0.5)<br />---------<br />.52359878</font></p><p><br /><font size="2">18.ATAN<br />返回一个数字的反正切值<br />SQL&gt; select atan(1) from dual;</font></p><p><font size="2">  ATAN(1)<br />---------<br />.78539816</font></p><p><br /><font size="2">19.CEIL<br />返回大于或等于给出数字的最小整数<br />SQL&gt; select ceil(3.1415927) from dual;</font></p><p><font size="2">CEIL(3.1415927)<br />---------------<br />              4</font></p><p><br /><font size="2">20.COS<br />返回一个给定数字的余弦<br />SQL&gt; select cos(-3.1415927) from dual;</font></p><p><font size="2">COS(-3.1415927)<br />---------------<br />             -1</font></p><p><br /><font size="2">21.COSH<br />返回一个数字反余弦值<br />SQL&gt; select cosh(20) from dual;</font></p><p><font size="2"> COSH(20)<br />---------<br />242582598</font></p><p><br /><font size="2">22.EXP<br />返回一个数字e的n次方根<br />SQL&gt; select exp(2),exp(1) from dual;</font></p><p><font size="2">   EXP(2)    EXP(1)<br />--------- ---------<br />7.3890561 2.7182818</font></p><p><br /><font size="2">23.FLOOR<br />对给定的数字取整数<br />SQL&gt; select floor(2345.67) from dual;</font></p><p><font size="2">FLOOR(2345.67)<br />--------------<br />          2345</font></p><p><br /><font size="2">24.LN<br />返回一个数字的对数值<br />SQL&gt; select ln(1),ln(2),ln(2.7182818) from dual;</font></p><p><font size="2">    LN(1)     LN(2) LN(2.7182818)<br />--------- --------- -------------<br />        0 .69314718     .99999999</font></p><p><br /><font size="2">25.LOG(n1,n2)<br />返回一个以n1为底n2的对数 <br />SQL&gt; select log(2,1),log(2,4) from dual;</font></p><p><font size="2"> LOG(2,1)  LOG(2,4)<br />--------- ---------<br />        0         2</font></p><p><br /><font size="2">26.MOD(n1,n2)<br />返回一个n1除以n2的余数<br />SQL&gt; select mod(10,3),mod(3,3),mod(2,3) from dual;</font></p><p><font size="2">MOD(10,3)  MOD(3,3)  MOD(2,3)<br />--------- --------- ---------<br />        1         0         2</font></p><p><br /><font size="2">27.POWER<br />返回n1的n2次方根<br />SQL&gt; select power(2,10),power(3,3) from dual;</font></p><p><font size="2">POWER(2,10) POWER(3,3)<br />----------- ----------<br />       1024         27</font></p><p><br /><font size="2">28.ROUND和TRUNC<br />按照指定的精度进行舍入<br />SQL&gt; select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;</font></p><p><font size="2">ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)<br />----------- ------------ ----------- ------------<br />         56          -55          55          -55</font></p><p><br /><font size="2">29.SIGN<br />取数字n的符号,大于0返回1,小于0返回-1,等于0返回0<br />SQL&gt; select sign(123),sign(-100),sign(0) from dual;</font></p><p><font size="2">SIGN(123) SIGN(-100)   SIGN(0)<br />--------- ---------- ---------<br />        1         -1         0</font></p><p><br /><font size="2">30.SIN<br />返回一个数字的正弦值<br />SQL&gt; select sin(1.57079) from dual;</font></p><p><font size="2">SIN(1.57079)<br />------------<br />           1</font></p><p><br /><font size="2">31.SIGH<br />返回双曲正弦的值<br />SQL&gt; select sin(20),sinh(20) from dual;</font></p><p><font size="2">  SIN(20)  SINH(20)<br />--------- ---------<br />.91294525 242582598</font></p><p><br /><font size="2">32.SQRT<br />返回数字n的根<br />SQL&gt; select sqrt(64),sqrt(10) from dual;</font></p><p><font size="2"> SQRT(64)  SQRT(10)<br />--------- ---------<br />        8 3.1622777</font></p><p><br /><font size="2">33.TAN<br />返回数字的正切值<br />SQL&gt; select tan(20),tan(10) from dual;</font></p><p><font size="2">  TAN(20)   TAN(10)<br />--------- ---------<br />2.2371609 .64836083</font></p><p><br /><font size="2">34.TANH<br />返回数字n的双曲正切值<br />SQL&gt; select tanh(20),tan(20) from dual;</font></p><p><font size="2"> TANH(20)   TAN(20)<br />--------- ---------<br />        1 2.2371609</font></p><p><font size="2"></font> </p><p><font size="2">35.TRUNC<br />按照指定的精度截取一个数<br />SQL&gt; select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;</font></p><p><font size="2">   TRUNC1 TRUNC(124.16666,2)<br />--------- ------------------<br />      100             124.16</font></p><p><font size="2"></font> </p><p><font size="2">36.ADD_MONTHS<br />增加或减去月份<br />SQL&gt; select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;</font></p><p><font size="2">TO_CHA<br />------<br />200002<br />SQL&gt; select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;</font></p><p><font size="2">TO_CHA<br />------<br />199910</font></p><p><br /><font size="2">37.LAST_DAY<br />返回日期的最后一天<br />SQL&gt; select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;</font></p><p><font size="2">TO_CHAR(SY TO_CHAR((S<br />---------- ----------<br />2004.05.09 2004.05.10<br />SQL&gt; select last_day(sysdate) from dual;</font></p><p><font size="2">LAST_DAY(S<br />----------<br />31-5月 -04</font></p><p><br /><font size="2">38.MONTHS_BETWEEN(date2,date1)<br />给出date2-date1的月份<br />SQL&gt; select months_between('19-12月-1999','19-3月-1999') mon_between from dual;</font></p><p><font size="2">MON_BETWEEN<br />-----------<br />          9<br />SQL&gt;selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;</font></p><p><font size="2"> MON_BETW<br />---------<br />      -60</font></p><p><br /><font size="2">39.NEW_TIME(date,'this','that')<br />给出在this时区=other时区的日期和时间<br />SQL&gt; select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time<br />  2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;</font></p><p><font size="2">BJ_TIME             LOS_ANGLES<br />------------------- -------------------<br />2004.05.09 11:05:32 2004.05.09 18:05:32</font></p><p><br /><font size="2">40.NEXT_DAY(date,'day')<br />给出日期date和星期x之后计算下一个星期的日期<br />SQL&gt; select next_day('18-5月-2001','星期五') next_day from dual;</font></p><p><font size="2">NEXT_DAY<br />----------<br />25-5月 -01</font></p><p><font size="2"></font> </p><p><font size="2">41.SYSDATE<br />用来得到系统的当前日期<br />SQL&gt; select to_char(sysdate,'dd-mm-yyyy day') from dual;</font></p><p><font size="2">TO_CHAR(SYSDATE,'<br />-----------------<br />09-05-2004 星期日<br />trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒<br />SQL&gt; select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,<br />  2  to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;</font></p><p><font size="2">HH                  HHMM<br />------------------- -------------------<br />2004.05.09 11:00:00 2004.05.09 11:17:00</font></p><p><font size="2"></font> </p><p><font size="2">42.CHARTOROWID<br />将字符数据类型转换为ROWID类型<br />SQL&gt; select rowid,rowidtochar(rowid),ename from scott.emp;</font></p><p><font size="2">ROWID              ROWIDTOCHAR(ROWID) ENAME<br />------------------ ------------------ ----------<br />AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH<br />AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN<br />AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD<br />AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES</font></p><p><br /><font size="2">43.CONVERT(c,dset,sset)<br />将源字符串 sset从一个语言字符集转换到另一个目的dset字符集<br />SQL&gt; select convert('strutz','we8hp','f7dec') "conversion" from dual;</font></p><p><font size="2">conver<br />------<br />strutz</font></p><p><br /><font size="2">44.HEXTORAW<br />将一个十六进制构成的字符串转换为二进制</font></p><p><br /><font size="2">45.RAWTOHEXT<br />将一个二进制构成的字符串转换为十六进制</font></p><p><font size="2"></font> </p><p><font size="2">46.ROWIDTOCHAR<br />将ROWID数据类型转换为字符类型</font></p><p><font size="2"></font> </p><p><font size="2">47.TO_CHAR(date,'format')<br />SQL&gt; select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;</font></p><p><font size="2">TO_CHAR(SYSDATE,'YY<br />-------------------<br />2004/05/09 21:14:41</font></p><p><font size="2"></font> </p><p><font size="2">48.TO_DATE(string,'format')<br />将字符串转化为ORACLE中的一个日期</font></p><p><br /><font size="2">49.TO_MULTI_BYTE<br />将字符串中的单字节字符转化为多字节字符<br />SQL&gt;  select to_multi_byte('高') from dual;</font></p><p><font size="2">TO<br />--<br />高</font></p><p><br /><font size="2">50.TO_NUMBER<br />将给出的字符转换为数字<br />SQL&gt; select to_number('1999') year from dual;</font></p><p><font size="2">     YEAR<br />---------<br />     1999</font></p><p><br /><font size="2">51.BFILENAME(dir,file)<br />指定一个外部二进制文件<br />SQL&gt;insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));</font></p><p><br /><font size="2">52.CONVERT('x','desc','source')<br />将x字段或变量的源source转换为desc<br />SQL&gt; select sid,serial#,username,decode(command,<br />  2  0,'none',<br />  3  2,'insert',<br />  4  3,<br />  5  'select',<br />  6  6,'update',<br />  7  7,'delete',<br />  8  8,'drop',<br />  9  'other') cmd  from v$session where type!='background';</font></p><p><font size="2">      SID   SERIAL# USERNAME                       CMD<br />--------- --------- ------------------------------ ------<br />        1         1                                none<br />        2         1                                none<br />        3         1                                none<br />        4         1                                none<br />        5         1                                none<br />        6         1                                none<br />        7      1275                                none<br />        8      1275                                none<br />        9        20 GAO                            select<br />       10        40 GAO                            none</font></p><p><br /><font size="2">53.DUMP(s,fmt,start,length)<br />DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值<br />SQL&gt; col global_name for a30<br />SQL&gt; col dump_string for a50<br />SQL&gt; set lin 200<br />SQL&gt; select global_name,dump(global_name,1017,8,5) dump_string from global_name;</font></p><p><font size="2">GLOBAL_NAME                    DUMP_STRING<br />------------------------------ --------------------------------------------------<br />ORACLE.WORLD                   Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D</font></p><p><br /><font size="2">54.EMPTY_BLOB()和EMPTY_CLOB()<br />这两个函数都是用来对大数据类型字段进行初始化操作的函数</font></p><p><br /><font size="2">55.GREATEST<br />返回一组表达式中的最大值,即比较字符的编码大小.<br />SQL&gt; select greatest('AA','AB','AC') from dual;</font></p><p><font size="2">GR<br />--<br />AC<br />SQL&gt; select greatest('啊','安','天') from dual;</font></p><p><font size="2">GR<br />--<br />天</font></p><p><br /><font size="2">56.LEAST<br />返回一组表达式中的最小值 <br />SQL&gt; select least('啊','安','天') from dual;</font></p><p><font size="2">LE<br />--<br />啊</font></p><p><br /><font size="2">57.UID<br />返回标识当前用户的唯一整数<br />SQL&gt; show user<br />USER 为"GAO"<br />SQL&gt; select username,user_id from dba_users where user_id=uid;</font></p><p><font size="2">USERNAME                         USER_ID<br />------------------------------ ---------<br />GAO                                   25</font></p><p><font size="2"></font> </p><p><font size="2">58.USER<br />返回当前用户的名字<br />SQL&gt; select user from  dual;</font></p><p><font size="2">USER<br />------------------------------<br />GAO</font></p><p><br /><font size="2">59.USEREVN<br />返回当前用户环境的信息,opt可以是:<br />ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE<br />ISDBA  查看当前用户是否是DBA如果是则返回true<br />SQL&gt; select userenv('isdba') from dual;</font></p><p><font size="2">USEREN<br />------<br />FALSE<br />SQL&gt; select userenv('isdba') from dual;</font></p><p><font size="2">USEREN<br />------<br />TRUE<br />SESSION<br />返回会话标志<br />SQL&gt; select userenv('sessionid') from dual;</font></p><p><font size="2">USERENV('SESSIONID')<br />--------------------<br />                 152<br />ENTRYID<br />返回会话人口标志<br />SQL&gt; select userenv('entryid') from dual;</font></p><p><font size="2">USERENV('ENTRYID')<br />------------------<br />                 0<br />INSTANCE<br />返回当前INSTANCE的标志<br />SQL&gt; select userenv('instance') from dual;</font></p><p><font size="2">USERENV('INSTANCE')<br />-------------------<br />                  1<br />LANGUAGE<br />返回当前环境变量<br />SQL&gt; select userenv('language') from dual;</font></p><p><font size="2">USERENV('LANGUAGE')<br />----------------------------------------------------<br />SIMPLIFIED CHINESE_CHINA.ZHS16GBK<br />LANG<br />返回当前环境的语言的缩写<br />SQL&gt; select userenv('lang') from dual;</font></p><p><font size="2">USERENV('LANG')<br />----------------------------------------------------<br />ZHS<br />TERMINAL<br />返回用户的终端或机器的标志<br />SQL&gt; select userenv('terminal') from dual;</font></p><p><font size="2">USERENV('TERMINA<br />----------------<br />GAO<br />VSIZE(X)<br />返回X的大小(字节)数<br />SQL&gt; select vsize(user),user from dual;</font></p><p><font size="2">VSIZE(USER) USER<br />----------- ------------------------------<br />          6 SYSTEM</font></p><p><font size="2"></font> </p><p><font size="2">60.AVG(DISTINCT|ALL)<br />all表示对所有的值求平均值,distinct只对不同的值求平均值<br />SQLWKS&gt; create table table3(xm varchar(8),sal number(7,2));<br />语句已处理。<br />SQLWKS&gt;  insert into table3 values('gao',1111.11);<br />SQLWKS&gt;  insert into table3 values('gao',1111.11);<br />SQLWKS&gt;  insert into table3 values('zhu',5555.55);<br />SQLWKS&gt; commit;</font></p><p><font size="2">SQL&gt; select avg(distinct sal) from gao.table3;</font></p><p><font size="2">AVG(DISTINCTSAL)<br />----------------<br />         3333.33</font></p><p><font size="2">SQL&gt; select avg(all sal) from gao.table3;</font></p><p><font size="2">AVG(ALLSAL)<br />-----------<br />    2592.59</font></p><p><br /><font size="2">61.MAX(DISTINCT|ALL)<br />求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次</font><font size="2"><br />　　返回选择列表项目的最大值，如果x是字符串数据类型，他返回一个VARCHAR2数据类型，如果X是一个DATA数据类型，返回一个日期，如果X是numeric数据类型，返回一个数字。注意distinct和all不起作用，应为最大值与这两种设置是相同的。<br /></font><font size="2">SQL&gt; select max(distinct sal) from scott.emp;</font></p><p><font size="2">MAX(DISTINCTSAL)<br />----------------<br />            5000</font></p><p><br /><font size="2">62.MIN(DISTINCT|ALL)<br />求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次<br />SQL&gt; select min(all sal) from gao.table3;</font></p><p><font size="2">MIN(ALLSAL)<br />-----------<br />    1111.11</font></p><p><br /><font size="2">63.STDDEV(distinct|all)<br />求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差<br />SQL&gt; select stddev(sal) from scott.emp;</font></p><p><font size="2">STDDEV(SAL)<br />-----------<br />  1182.5032</font></p><p><font size="2">SQL&gt; select stddev(distinct sal) from scott.emp;</font></p><p><font size="2">STDDEV(DISTINCTSAL)<br />-------------------<br />           1229.951</font></p><p><font size="2"></font> </p><p><font size="2">64.VARIANCE(DISTINCT|ALL)<br />求协方差 </font></p><p><font size="2">SQL&gt; select variance(sal) from scott.emp;</font></p><p><font size="2">VARIANCE(SAL)<br />-------------<br />    1398313.9</font></p><p><br /><font size="2">65.GROUP BY<br />主要用来对一组数进行统计<br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno;</font></p><p><font size="2">   DEPTNO  COUNT(*)  SUM(SAL)<br />--------- --------- ---------<br />       10         3      8750<br />       20         5     10875<br />       30         6      9400</font></p><p><font size="2"></font> </p><p><font size="2">66.HAVING<br />对分组统计再加限制条件<br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)&gt;=5;</font></p><p><font size="2">   DEPTNO  COUNT(*)  SUM(SAL)<br />--------- --------- ---------<br />       20         5     10875<br />       30         6      9400<br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp having count(*)&gt;=5 group by deptno ;</font></p><p><font size="2">   DEPTNO  COUNT(*)  SUM(SAL)<br />--------- --------- ---------<br />       20         5     10875<br />       30         6      9400</font></p><p><br /><font size="2">67.ORDER BY<br />用于对查询到的结果进行排序输出<br />SQL&gt; select deptno,ename,sal from scott.emp order by deptno,sal desc;</font></p><p><font size="2">   DEPTNO ENAME            SAL<br />--------- ---------- ---------<br />       10 KING            5000<br />       10 CLARK           2450<br />       10 MILLER          1300<br />       20 SCOTT           3000<br />       20 FORD            3000<br />       20 JONES           2975<br />       20 ADAMS           1100<br />       20 SMITH            800<br />       30 BLAKE           2850<br />       30 ALLEN           1600<br />       30 TURNER          1500<br />       30 WARD            1250<br />       30 MARTIN          1250<br />       30 JAMES            950</font></p><img src ="http://www.blogjava.net/joeyeezhang/aggbug/79095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joeyeezhang/" target="_blank">joeyeezhang</a> 2006-11-04 19:16 <a href="http://www.blogjava.net/joeyeezhang/archive/2006/11/04/79095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNDI setting</title><link>http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27250.html</link><dc:creator>joeyeezhang</dc:creator><author>joeyeezhang</author><pubDate>Mon, 09 Jan 2006 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27250.html</guid><wfw:comment>http://www.blogjava.net/joeyeezhang/comments/27250.html</wfw:comment><comments>http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joeyeezhang/comments/commentRss/27250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joeyeezhang/services/trackbacks/27250.html</trackback:ping><description><![CDATA[&lt;Context path="/OceanSoftPortal" docBase="d:\workspace\OceanSoftPortal\main\web" workDir="d:\workspace\OceanSoftPortal\work" reloadable="true"&gt;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Resource auth="Container" name="jdbc/javadb" type="javax.sql.DataSource"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;ResourceParams name="jdbc/javadb"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;factory&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;url&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;jdbc:microsoft:sqlserver://jasonywf:1433;DatabaseName=oceansoftoa&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;password&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;maxWait&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;10000&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;maxActive&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;100&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;driverClassName&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;username&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;sa&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;maxIdle&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;30&lt;/value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ResourceParams&gt;<BR>&nbsp;<BR>&nbsp;&lt;/Context&gt;<img src ="http://www.blogjava.net/joeyeezhang/aggbug/27250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joeyeezhang/" target="_blank">joeyeezhang</a> 2006-01-09 13:39 <a href="http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>About database Url setting</title><link>http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27249.html</link><dc:creator>joeyeezhang</dc:creator><author>joeyeezhang</author><pubDate>Mon, 09 Jan 2006 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27249.html</guid><wfw:comment>http://www.blogjava.net/joeyeezhang/comments/27249.html</wfw:comment><comments>http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joeyeezhang/comments/commentRss/27249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joeyeezhang/services/trackbacks/27249.html</trackback:ping><description><![CDATA[<P><STRONG>mysql</STRONG><BR>drivers=org.gjt.mm.mysql.Driver <BR>logfile=\doc\\lo.txt </P>
<P>mysql.url=jdbc:mysql://localhost/数据库名?useUnicode=true&amp;characterEncoding=8859_1 <BR>mysql.maxconn=5 <BR>mysql.user= <BR>mysql.password= <BR>mysql.driver=org.gjt.mm.mysql.Driver<BR>mysql.url=jdbc:mysql://218.197.19.113/study?useUnicode=true&amp;characterEncoding=GBK</P>
<P><BR><STRONG>Oracle</STRONG><BR>drivers = oracle.jdbc.driver.OracleDriver<BR>url = jdbc:oracle:thin:@localhost:1521:orcl<BR>DB2<BR>drivers = com.ibm.db2.jdbc.app.DB2Driver <BR>url = jdbc:db2://localhost:5000/sample</P>
<P><STRONG>Informix</STRONG><BR>drivers = com.informix.jdbc.IfxDriver<BR>url = jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver; <BR>user=testuser;password=testpassword</P>
<P><BR><STRONG>Sql Server7.0/2000</STRONG><BR>drivers = com.microsoft.jdbc.sqlserver.SQLServerDriver<BR>drivers = sun.jdbc.odbc.JdbcOdbcDriver<BR>url = jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs<BR>url = jdbc:odbc:driver={SQL Server};server=zhl;Database=school</P>
<P><STRONG>Access</STRONG> <BR>drivers = sun.jdbc.odbc.JdbcOdbcDriver<BR>url = jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\projects\\demo.mdb</P>
<P>for example:</P>
<P>＜%@ page contentType="text/html;charset=gb2312"%＞ <BR>＜%@ page import="java.sql.*"%＞ <BR>＜html＞ <BR>＜body＞ <BR>＜%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <BR>String url="jdbc:oracle:thin:@localhost:1521:orcl"; <BR>//orcl为你的数据库的SID <BR>String user="scott"; <BR>String password="tiger"; <BR>Connection conn= DriverManager.getConnection(url,user,password); <BR>Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <BR>String sql="select * from test"; <BR>ResultSet rs=stmt.executeQuery(sql); <BR>while(rs.next()) {%＞ <BR>您的第一个字段内容为：＜%=rs.getString(1)%＞ <BR>您的第二个字段内容为：＜%=rs.getString(2)%＞ <BR>＜%}%＞ <BR>＜%out.print("数据库操作成功，恭喜你");%＞ <BR>＜%rs.close(); <BR>stmt.close(); <BR>conn.close(); <BR>%＞ <BR>＜/body＞ <BR>＜/html＞ </P>
<P>&nbsp;</P><img src ="http://www.blogjava.net/joeyeezhang/aggbug/27249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joeyeezhang/" target="_blank">joeyeezhang</a> 2006-01-09 13:33 <a href="http://www.blogjava.net/joeyeezhang/archive/2006/01/09/27249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The sql statement of geting data about table config in SQL Server</title><link>http://www.blogjava.net/joeyeezhang/archive/2006/01/06/26881.html</link><dc:creator>joeyeezhang</dc:creator><author>joeyeezhang</author><pubDate>Fri, 06 Jan 2006 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/joeyeezhang/archive/2006/01/06/26881.html</guid><wfw:comment>http://www.blogjava.net/joeyeezhang/comments/26881.html</wfw:comment><comments>http://www.blogjava.net/joeyeezhang/archive/2006/01/06/26881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joeyeezhang/comments/commentRss/26881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joeyeezhang/services/trackbacks/26881.html</trackback:ping><description><![CDATA[<UL>
<LI>
<P class=MsoNormal><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">select table_name from INFORMATION_SCHEMA.TABLES</SPAN></FONT></P></LI>
<LI><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">
<P class=MsoNormal><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">SELECT dbo.syscolumns.name, dbo.syscolumns.colid AS columnID,dbo.sysobjects.ID AS TableID,&nbsp;</SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.systypes.name as DataType,</SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">case when dbo.syscolumns.autoval is not null then 1 else 0 end isautoval,</SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; dbo.syscolumns.prec ,</SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.syscolumns.isnullable ,dbo.syscolumns.scale,</SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.sysproperties.[value] AS Description FROM&nbsp;&nbsp; dbo.systypes RIGHT OUTER JOIN </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.syscolumns ON dbo.systypes.xtype = dbo.syscolumns.xtype LEFT OUTER JOIN </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.sysproperties ON dbo.syscolumns.id = dbo.sysproperties.id AND </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.syscolumns.colid = dbo.sysproperties.smallid RIGHT OUTER JOIN&nbsp;</SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">WHERE systypes.xtype = systypes.xusertype and (dbo.sysobjects.xtype = 'u') AND (dbo.systypes.status &lt;&gt; 1) AND </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(dbo.sysobjects.id &lt;&gt; 1977058079) and dbo.sysobjects.name='hr_users' order by dbo.syscolumns.colid</SPAN></FONT></P></SPAN></FONT></LI>
<LI><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">
<P class=MsoNormal><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">SELECT&nbsp; dbo.syscolumns.name as name, dbo.sysproperties.[value] AS Description </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">FROM&nbsp;&nbsp; dbo.syscolumns LEFT OUTER JOIN </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.sysproperties ON dbo.syscolumns.id = dbo.sysproperties.id AND </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.syscolumns.colid = bo.sysproperties.smallid RIGHT OUTER JOIN </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">WHERE (dbo.sysobjects.xtype = 'u') AND </SPAN></FONT><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(dbo.sysobjects.id &lt;&gt; 1977058079) and dbo.sysobjects.name='hr_users'<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></P><o:p></o:p></SPAN></FONT>
<P class=MsoNormal><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P><o:p></o:p></SPAN></FONT>
<P class=MsoNormal><FONT face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P></LI></UL><img src ="http://www.blogjava.net/joeyeezhang/aggbug/26881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joeyeezhang/" target="_blank">joeyeezhang</a> 2006-01-06 14:46 <a href="http://www.blogjava.net/joeyeezhang/archive/2006/01/06/26881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>