<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_侧身向南边</title><subtitle type="text">ORACLE,C#,JAVA...</subtitle><id>http://feed.cnblogs.com/blog/u/14462/rss</id><updated>2011-11-16T09:48:45Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/14462/rss"/><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/11/11/2245410.html</id><title type="text">字符集、编码以及Oracle的那些事</title><summary type="text">在字符集与编码世界的漫漫历史长河里（伪），出现过很多让人如雷贯耳的名字，这些名字，有些已经成了浮云飘散了，有些还在我们的代码中折腾。作为计算机工作者的我们，是否知道它们，是否知道UTF8,UTF16,UTF32的区别，是否知道GBK与GB18030，是否知道Codepage，是否知道ANSI codepage与OEM codepage，是否知道Oracle中的数据库字符集与国家字符集，是否知道Oracle的字符集转换，是否知道客户端NLS_LANG对ODP.NET的影响……希望本文能给大家提供一些帮助，有谬误之处希望大家指正。</summary><published>2011-11-11T02:58:00Z</published><updated>2011-11-11T02:58:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/11/11/2245410.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/11/11/2245410.html"/><content type="html">&lt;strong&gt;&lt;span style="font-size: 18pt; color: #3366ff; font-family: SimSun"&gt;第一部分&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 18pt; color: #3366ff; font-family: SimSun"&gt;字符集与编码常识&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="color: #3366ff; font-family: SimSun"&gt;字符集：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;人们根据需要把某些字符收集到一处，并赋以名称，于是便有了某某字符集。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="color: #3366ff; font-family: SimSun"&gt;编码：&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;当&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;前面收集的工作完成以后，为了让只认识数字的&amp;#8220;愚蠢&amp;#8221;的计算机也能够存储字符，&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;人们不得不为&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;集合里的每一&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;个&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符分配&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;身份证号码&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，这就是编码，从此，终于可以以存储编码的方式在计算机中存储字符了。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;在字符集与编码世界的漫漫历史长河里（伪），出现过若干个让计算机工作者们如雷贯耳的名字，这些名字，有些已经成了浮云飘散了，有些还在我们的代码中折腾。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：包含大小写英文、阿拉伯数字、标点，以及一些不可见的控制符共&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;128&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;个。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;7&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;位表示一个字符。&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码范围是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-127]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Hex[00-7F]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;），其中&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-31]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Hex[00-1F]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）部分以及&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;127&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Hex7F&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）是控制符，其余的都是些可见字符。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;:&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+7000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;左右汉字字符。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：兼容&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码。对字节进行判断，如值&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;127&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，则意义等同于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码；如值&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;gt;127&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，则它需要跟其后的另一个字节合并表示一个字符。其理论汉字编码空间为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;128X256&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，超过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;3&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;万个字符。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GBK&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GBK&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+20000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;左右汉字字符。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GBK&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：兼容&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码。利用了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码闲置的编码空间。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB18030&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;:&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB18030&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GBK&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;若干汉字&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;若干少数民族字符，为目前国内最新的字符集。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB18030&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：兼容&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GBK&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码。继续利用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GBK&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码闲置的编码空间，对于超出编码空间的则采用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;个字节表示。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;BIG5&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;BIG5&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+13000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;左右汉字（繁体）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;BIG&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：兼容&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码。其编码模式类似于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GB2312.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：（&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;一词在日常使用中显得宽泛、混乱，在不同的语境中可以是以下意思之一。&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;标准&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;由一些组织提出的一套标准，对人类文字的显示、编码等进行了一系列的规定。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：目前最新版的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集中已经包含各种语言的超过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;10&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;万的字符。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：（&lt;span style="color: #00b050"&gt;狭义的&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;编码&lt;strong&gt;可能&lt;/strong&gt;指&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;UCS-2&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;，&lt;strong&gt;也可能&lt;/strong&gt;指&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;UTF-16&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;；广义的&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;编码可以指包括以下四种在内的若干种对&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;标准的编码实现。&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 41pt; text-indent: -21pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-32&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;固定使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;个字节来表示一个字符，存在空间利用效率的问题。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 41pt; text-indent: -21pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-16&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;对相对常用的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;60000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;余个字符使用两个字节进行编码，其余的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8217;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;补充字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;supplementary characters&amp;#8217;)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字节。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 41pt; text-indent: -21pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UCS-2&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：是对&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;早期版本的实现，它与&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的唯一区别是它不包括&amp;#8217;补充字符&amp;#8217;，所以它对字符的编码只使用两个字节。&lt;u&gt;目前此编码模式已过时&lt;/u&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 41pt; text-indent: -21pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-8&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：兼容&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码；拉丁文、希腊文等使用两个字节；包括汉字在内的其它常用字符使用三个字节；剩下的极少使用的字符使用四个字节。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ISO8859-1&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：（&lt;span style="color: #00b050"&gt;使用&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;的同志们可能见过这个&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;WE8ISO89859P1&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;，没错，就是它。&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ISO8859-1&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;若干西欧字符，例如&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字母&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#194;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#203;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ISO8859-1&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;位表示一个字符，同时移除了原&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码中的控制符（即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-31]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，及&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;127&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Code page&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：（&lt;span style="color: #00b050"&gt;可以把&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;code page&amp;#8221;&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;认为是&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;编码&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;的近义词。至于为什么有这个名称？历史遗留问题。&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code pages&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：你一定见过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，想想另存文本文件时。&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code pages&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;实际上是一系列的编码集合，根据操作系统区域设置而激活其中一种作为默认&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码。例如公司电脑（英文系统）上的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;可能是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，而家里的中文系统则可能是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;936&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。所以在家里可以用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;存储一个包含中文的文本文件，在公司则不行。可以在注册表键：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NLS\CodePage\ACP&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中查看到当前使用的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt; C#&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;可以通过&lt;/span&gt;&lt;span style="font-size: 9.5pt; color: #2b91af; font-family: 'Century Gothic','sans-serif'"&gt;Encoding&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: 'Century Gothic','sans-serif'"&gt;.Default&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;查看。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 23pt; text-indent: -21pt"&gt;&lt;span style="font-size: 9.5pt; font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OEM code pages&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt; OEM code pages&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是给控制台应用程序（如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）使用的。除&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CJK&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;环境（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Chinese-Japanese-Korean&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）外，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Windows&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用不同的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;和&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OEM code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。例如，公司英文系统上使用的是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。可以使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CHCP&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;命令查看当前使用的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OEM code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt; C#&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;可以通过&lt;/span&gt;&lt;span style="font-size: 9.5pt; color: #2b91af; font-family: 'Century Gothic','sans-serif'"&gt;Console&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: 'Century Gothic','sans-serif'"&gt;.OutputEncoding&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: SimSun"&gt;查看。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Code page 1252&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp1252&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;若干西欧字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;若干特殊符号，比如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8482;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8240;.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp1252&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;编码&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;位表示一个字符。编码范围是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-255]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Hex[00-FF]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;），&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-127]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;部分与&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;相同，新增的大部分是西欧的字符，例如一些带上标的字母&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#194;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#203;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，以及像这样一类特殊符号）&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;PS1&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：现实中两台&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PC&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;上的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;信息&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PC 1&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：英文版&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Windows XP&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code page=1252, OEM code page=437&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PC 2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：中文版&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Windows 7&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ANSI code page=936,&amp;nbsp;&amp;nbsp; OEM code page=936&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PS2&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;与&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码表下载请猛击&lt;a title="这里" style="color: #ff0000" href="http://files.cnblogs.com/KissKnife/cp437-cp1252.rar"&gt;这里&lt;/a&gt;，早期控制台应用程序常常需要画一些粗糙的表格等等图形，所以可以在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中看到不少不同的横线竖线这一类的特殊符号。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PS3&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CP1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ISO8859-1&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;比较，&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;就实际使用的编码范围来说：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CP1252&amp;gt;ISO8859-1&amp;gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-127]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CP1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-255]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ISO8859-1&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;则移除了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[0-31]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;及&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;127&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;这些不可见的控制符，同进移除了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[128-159]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Hex[80-9F]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）中的特殊符号。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 18pt; color: #3366ff; font-family: SimSun"&gt;第二部分&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 18pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt; Oracle&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 18pt; color: #3366ff; font-family: SimSun"&gt;中的编码与字符集&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;1.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;为什么需要两个字符集？&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中有两个字符集：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;1&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）数据库字符集&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）国家字符集&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;为什么要有两个字符集？如果我知道只需要英文，设置数据库字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;=US7ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，如果我知道只需要西欧字符，设置数据库字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;=WE8MSWIN1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;或者&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE8ISO89859P1&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，或者干脆就用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL32UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。你看，我只需要设定&amp;#8220;数据库字符集&amp;#8221;，那么&amp;#8220;国家字符集&amp;#8221;有什么必要呢？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;其实，考虑到历史遗留问题以及数据库创建者们无法避免的&amp;#8220;短视&amp;#8221;，很多现有数据库都无法支持&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集，例如要在现有的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US7ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;数据库字符集的数据库中存储中文，这个时候&amp;#8220;国家字符集&amp;#8221;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;+NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;这样的组合就能救你一命了。对于数据类型为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;以及&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NCHAR, NCLOB)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的字段，它使用是国家字符集，与数据库字符集的设置无关。自&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;9i&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;以后，国家字符集可选的只有&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL16UTF16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;与&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL32UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;与&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;都是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码标准的实现，因些可以表示世界上几乎所有的文字。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;当然，如果数据库字符集本身就使了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集，就没有必要使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2, NCHAR, NCLOB&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;这些类型了。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;2.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;字符集名称的玄机&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;对字符集的命名实际上有一定的规则可寻，例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL32UTF8&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】支持所有语言（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;All Language&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;32&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】每字符最多占用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;32&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;位（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字节）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】编码为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE8MSWIN1252&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】支持西欧语言（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Western Europe&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】每字符需要占用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;位（单字节）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;MSWIN1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】编码为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CP1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US7ASCII&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】表示美国（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;United States&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;7&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】每字符需要占用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;7&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;位。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;【&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;】编码为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;其它如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ZHS16GBK&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ZHT16BIG5&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US8PC437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（编码为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OEM cp437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;），都可以类推。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;3.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;例子很重要&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;3.1.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;准备两个数据库&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;上帝说要有例子，于是有了两个相同版本的数据库，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;跟&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('caf35650-ea75-4b5d-947d-581fc29843a4')"&gt;&lt;img  id="code_img_opened_caf35650-ea75-4b5d-947d-581fc29843a4" style="display: none" onclick="cnblogs_code_hide('caf35650-ea75-4b5d-947d-581fc29843a4',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_caf35650-ea75-4b5d-947d-581fc29843a4"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&amp;nbsp;parameter,&amp;nbsp;VALUE&lt;br /&gt;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;&amp;nbsp;nls_database_parameters&lt;br /&gt;&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt;&amp;nbsp;parameter&amp;nbsp;&lt;span style="color: #808080"&gt;IN&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;NLS_CHARACTERSET&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;NLS_NCHAR_CHARACTERSET&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;数据库A：&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;PARAMETER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VALUE&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;----------------------------&amp;nbsp;-------------------&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;NLS_CHARACTERSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WE8MSWIN1252&lt;br /&gt;NLS_NCHAR_CHARACTERSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AL16UTF16&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;数据库B：&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;PARAMETER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VALUE&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;----------------------------&amp;nbsp;-----------------&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;NLS_CHARACTERSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AL32UTF8&lt;br /&gt;NLS_NCHAR_CHARACTERSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AL16UTF16&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;在A和B中分别创建一张表。&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt;&amp;nbsp;charset_test&amp;nbsp;&lt;br /&gt;(id&amp;nbsp;&lt;span style="color: #0000ff"&gt;NUMBER&lt;/span&gt;(&lt;span style="font-weight: bold; color: #800000"&gt;4&lt;/span&gt;)&amp;nbsp;&lt;span style="color: #0000ff"&gt;PRIMARY&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;KEY&lt;/span&gt;,&lt;br /&gt;vc&amp;nbsp;&lt;span style="color: #0000ff"&gt;VARCHAR2&lt;/span&gt;(&lt;span style="font-weight: bold; color: #800000"&gt;20&lt;/span&gt;),&lt;br /&gt;nvc&amp;nbsp;NVARCHAR2(&lt;span style="font-weight: bold; color: #800000"&gt;20&lt;/span&gt;));&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;3.2.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;工具很重要&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;在测试之前，为避免工具本身的特性给人造成的困惑，介绍一下几个客户端工具对&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE &lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的支持情况：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：不支持&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集。是否支持中文取决于当前的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OEM code page&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，如果是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，无论输入还是显示中文都是不可能的。但如果是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;cp936&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，则可以支持中文输入输出。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PLSQL Developer&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;7.0&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;版本的查询结果窗口支持&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集，但是编辑窗口&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即输入&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQL&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;语句的窗口&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;不支持。&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8.0&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;版完全支持&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;：查询结果窗口与编辑窗口都支持&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;3.3.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;出现乱码了&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;这里使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，分别在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中插入并查询中文：&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('07d3d81f-0af2-43c9-b5c6-0ee12e06ab25')"&gt;&lt;img  id="code_img_opened_07d3d81f-0af2-43c9-b5c6-0ee12e06ab25" style="display: none" onclick="cnblogs_code_hide('07d3d81f-0af2-43c9-b5c6-0ee12e06ab25',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_07d3d81f-0af2-43c9-b5c6-0ee12e06ab25"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;INSERT&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt;&amp;nbsp;charset_test&amp;nbsp;&lt;span style="color: #0000ff"&gt;VALUES&lt;/span&gt;(&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;,&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;中&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;中&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff"&gt;COMMIT&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;A库&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;&amp;nbsp;charset_test;&lt;br /&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#191;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#191;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;B库&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;&amp;nbsp;charset_test;&lt;br /&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;暂时先跳过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字段，先来关注&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字段，为什么在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库不能正常显示？无非有这几种可能：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端操作系统不支持显示中文。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端工具（这里是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）不支持显示中文。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端有相关设置（比如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）不正确。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;存储在数据库中的数据已经是不正确的数据。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;第一点，客户端操作系统是否支持中文对运行于其上的应用程序有影响吗？应该有两种情况，一种是应用程序依赖于操作系统的中文支持；另一种是有一些软件自己带有语言包及字体（比如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Adobe&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的一些产品，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;.NET&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;程序在编译的时候也可以选择将字体文件打包进去），那么它应该不依赖于操作系统。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;我猜测&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;应该是属于前一种，同时我检查了操作系统，确定其已经支持东亚语言（&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Control panel&amp;#8212;Regional and language options&amp;#8212;Language tab&amp;#8212;Supplemental languages support&amp;#8212;Install files for East Asian languages&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，如果&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;checkbox&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;已经选中，说明已经安装东亚语言包）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;第二点，无论查询结果窗口还是编辑窗口都支持&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UNICODE&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;第三点，由于不依赖于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OCI&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，客户端注册表中的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置对像&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;没有影响。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;第四点，我们借助&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;DUMP()&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;函数来确定&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字段中具体的内容。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;DUMP()&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的语法：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;DUMP(&amp;lt;value&amp;gt;[,&amp;lt;format&amp;gt;[,&amp;lt;offset&amp;gt;[,&amp;lt;length&amp;gt;]]])&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: SimSun"&gt;其中的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;format&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;参数：如果是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;则表示结果使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进制表示，如果是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;则表示&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进制，如果是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;0&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;到&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;间的其它数则都使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;10&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进制。如果是大于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的数，则分几种情况：如果是可见的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符则直接打印此字符，如果是控制字符则打印成&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8220;^x&amp;#8221;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，其它情况则把结果按&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进制显示。为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;format&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;加上&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;1000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;则表示除了输出结果之外，还会附带输出所使用的字符集信息。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;这里我们使用：&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('2a3c9a4e-e4be-4791-b4a7-6986d9ddecde')"&gt;&lt;img  id="code_img_opened_2a3c9a4e-e4be-4791-b4a7-6986d9ddecde" style="display: none" onclick="cnblogs_code_hide('2a3c9a4e-e4be-4791-b4a7-6986d9ddecde',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_2a3c9a4e-e4be-4791-b4a7-6986d9ddecde"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;DUMP&lt;/span&gt;(nvc,&lt;span style="font-weight: bold; color: #800000"&gt;1016&lt;/span&gt;)&amp;nbsp;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;&amp;nbsp;charset_test;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;A库&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;Typ&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ff00ff"&gt;Len&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;&amp;nbsp;CharacterSet&lt;span style="color: #808080"&gt;=&lt;/span&gt;AL16UTF16:&amp;nbsp;&lt;span style="font-weight: bold; color: #800000"&gt;0&lt;/span&gt;,bf&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;B库&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;Typ&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ff00ff"&gt;Len&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;&amp;nbsp;CharacterSet&lt;span style="color: #808080"&gt;=&lt;/span&gt;AL16UTF16:&amp;nbsp;4e,2d&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;我们知道&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8220;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4E2D&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，显然在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库中存储的数据已经是不对的，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;00BF&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;实际上就是一个倒的问号字符，其存储在数据库中的原始数据已经不对了，更何况是客户端的显示。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;3.4.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;找不同&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;那么为什么两个库会不一样呢？嫌疑很快就落在了数据库字符集上，因为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;和&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的区别只在数据库字符集上，一个是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE8MSWIN1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，另一个是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL32UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。经过测试，结论是：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;忽略&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;，字符串直接以&lt;strong&gt;照数据库字符集&lt;/strong&gt;进行编码后由客户端传输到服务器端。由于&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;库数据库字符集不支持汉字，很不幸地被替换成了默认的&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;BF&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;并最终被存储到数据库中，永远地错下去。&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;B&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;库则相反，中文在传输的过程中&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8220;&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;存活&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;下来并成功到达服务器端，最终自动转换成&lt;/span&gt;&lt;span style="color: #00b050; font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="color: #00b050; font-family: SimSun"&gt;所用的编码并存储到库中。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;3.5.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;如何让&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;字段工作&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;看起来似乎&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库中的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字段永远也无法正常使用了，并非这样，对于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，通过一些设置，就可以让&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;可以正常地插入、查询。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;找到&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;{ORACLE_HOME}\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（依赖于你的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;安装路径），添加一行配置：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AddVMOption&amp;nbsp;-Doracle.jdbc.convertNcharLiterals=true&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;同时在中文字符串前添加&amp;#8220;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;N&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&amp;#8221;前缀：&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('a573b765-563a-4fc9-beb5-b12d80e0fa62')"&gt;&lt;img  id="code_img_opened_a573b765-563a-4fc9-beb5-b12d80e0fa62" style="display: none" onclick="cnblogs_code_hide('a573b765-563a-4fc9-beb5-b12d80e0fa62',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_a573b765-563a-4fc9-beb5-b12d80e0fa62"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;INSERT&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt;&amp;nbsp;charset_test&amp;nbsp;&lt;span style="color: #0000ff"&gt;VALUES&lt;/span&gt;(&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;,&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;中&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;,N&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000"&gt;中&lt;/span&gt;&lt;span style="color: #ff0000"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080"&gt;--&lt;/span&gt;&lt;span style="color: #008080"&gt;NVARCHAR2列中的中文不再是乱码了&lt;/span&gt;&lt;span style="color: #008080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;&amp;nbsp;charset_test&amp;nbsp;&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt;&amp;nbsp;id&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;;&lt;br /&gt;&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#191;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;这个配置起到的作用是这样的：在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;INSERT&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;语句从客户端传输到服务器端之前，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;检测（实际上是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;JDBC&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;检测）语句，如果发现&amp;#8220;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;N&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&amp;#8221;前缀，则事先将这部分的字符串按&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF-16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进行编码得到&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;16&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进制串。也就是相当于执行了这个命令：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;INSERT INTO charset_test VALUES(2,&amp;#8217;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#8217;,UNISTR('\4e2d'));&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;C#&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;不需要做特殊的配置来让&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;正常工作，只需要在执行&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;INSERT&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;时使用参数并选择正确的参数类型选：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('784f8232-215b-4111-b0ae-188aea26baef')"&gt;&lt;img  id="code_img_opened_784f8232-215b-4111-b0ae-188aea26baef" style="display: none" onclick="cnblogs_code_hide('784f8232-215b-4111-b0ae-188aea26baef',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_784f8232-215b-4111-b0ae-188aea26baef"&gt;&#xD;
&lt;div&gt;cmd.CommandText&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;insert&amp;nbsp;into&amp;nbsp;charset_test&amp;nbsp;values(3,:vc,:nvc)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;;&lt;br /&gt;OracleParameter&amp;nbsp;p1&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OracleParameter(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;vc&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;OracleDbType.Varchar2);&lt;br /&gt;OracleParameter&amp;nbsp;p2&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OracleParameter(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;nvc&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;OracleDbType.NVarchar2);&lt;br /&gt;p1.Value&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;中&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;;&lt;br /&gt;p2.Value&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;中&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;;&lt;br /&gt;cmd.Parameters.Add(p1);&lt;br /&gt;cmd.Parameters.Add(p2);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;4.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;客户端的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;设置及编码转换&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;前面我说过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;忽略客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置，那么对于其它的工具呢？（这里我们主要关注字符集及编码，不讨论&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;对日期格式、排序方式、数字显示格式等等的影响）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;，插入与查询都依赖于客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置。通常，客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置要与当前的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OEM Codepage&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;一致，比如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US8PC437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PL/SQL Developer&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;插入与查询都依赖于客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置。通常，客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置要与数据库字符集一致。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;可以清晰地看到&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码转换的过程：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;1) &lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端向服务器端提交&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQL&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;语句时，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;和数据库字符集，对从应用程序接传送过来的字符串编码进行转换处理。如果&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;与数据库字符集相同，不作转换，否则要转换成数据库字符集并传送到服务器。服务器在接收到字符串编码之后，对于普通的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;CHAR&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;或&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;类型，直接存储；对于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NCHAR&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;或&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;类型，服务器端将其转换为国家字符集再存储。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&lt;img height="749" alt="" src="http://images.cnblogs.com/cnblogs_com/kissknife/charset-conversion-1.png" width="762" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;2) &lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在查询数据时，服务器端原样返回存储在库中的数据，由客户端根据返回的元数据中的字符集信息与&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;和&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_NCHAR&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的设置进行比较（如果&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_NCHAR&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;没有设置，则其默认值为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中的字符集设置），如果元数据中的字符集信息与客户端设置一致，不进行转换，否则要进行转换。国家字符集的转换根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_NCHAR&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置进行转换。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&lt;img height="626" alt="" src="http://images.cnblogs.com/cnblogs_com/kissknife/charset-conversion-3.png" width="908" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;这里我也举几个使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的测试例子，分别在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;、&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;两库执行相同的语句，然后通过网络抓包查看从&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;传输到服务器的具体内容。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;&lt;strong&gt;例&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;span style="font-size: 12pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE8MSWIN1252&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQL&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;命令：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;insert into charset_test values(1,'&amp;#230;',null);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;网络抓包&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库，数据库字符集为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE8MSWIN1252)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;解释：由于应用程序&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，所以&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#230;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。当&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;被传给&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;后，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;误判其使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，又由于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置与数据库字符集一致，于是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;不进行编码转换，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;被直接传给服务器并存储，考虑到数据库字符集是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，很显然&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是错误的数据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[&amp;#230;]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;下的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;E6&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，而非&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;这个错误导致了一个有趣的现象，那就是在同一个客户端使用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;查询居然可以看到正确字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[&amp;#230;]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，这是由于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SELECT&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的时候&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;也被直接返回，并且在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;也不进行编码转换而是直接传给了应用程序，恰巧应用程序根据自己使用的编码可以正确解析&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。但是换一个客户端机器，或者换一个客户端工具都可能得到不一样的查询结果。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;网络抓包&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库，数据库字符集为&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL32UTF8)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;E2 80 98 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;解释：由于应用程序&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，所以&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#230;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。当&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;被传给&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;后，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;误判其使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，而&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中对应的是字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&amp;#8216;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;到数据字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的转换，最终转换成了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;E2 80 98&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;下的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&amp;#8216;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;&lt;strong&gt;例&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt; &lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US7ASCII&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQL&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;命令：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;insert into charset_test values(1,'&amp;#230;',null);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;网络抓包&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;BF&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;解释：由于应用程序&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，所以&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#230;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。当&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;被传给&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;后，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;误判其使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，而&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中是无效编码，根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;到数据字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的转换，最终转换成了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;BF&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;BF&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;遇到无效编码时使用的默认替换编码。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;网络抓包&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt; EF BF BD &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;解释：由于应用程序&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，所以&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#230;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;。当&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;被传给&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;后，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;误判其使用的编码是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，而&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;91&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中是无效编码，根据&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;到数据字符集&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的转换，最终转换成了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;EF BF BD&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;EF BF BD&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;遇到无效编码时使用的默认替换编码。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;&lt;strong&gt;例&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&lt;span style="color: #3366ff"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US8PC437&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQL&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;命令：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;insert into charset_test values(1,'&amp;#230;',null);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;网络抓包&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(A&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;E6&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;解释：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;E6&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[&amp;#230;]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的正确的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码，此次由于应用程序&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用的是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;从&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;获得的编码信息也是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，于是进行了正确的编码转换。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;网络抓包&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(B&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;库&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;C3 A6&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;解释：&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;C3 A6&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是字符&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;[&amp;#230;]&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的正确的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;UTF8&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;编码，此次由于应用程序&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;(&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用的是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle client&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;从&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;获得的编码信息也是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Codepage437&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，于是进行了正确的编码转换。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;我觉得，只有&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;SQLPLUS&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的日子总是那么美好，一切看起来既合理又可解释。当其它工具出现之后，世界就变得一团乱麻了，&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;完全忽略客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置倒是让事情变得简单，不过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PL/SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;则是另一回事，我花了&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;天时间企图搞明白其中的编码转换过程，最终只证明它就是个不可理喻的玩意儿，唯一目前看起来还正确的结论是：如果要用&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;PL/SQL Developer&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，只好还是把&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设置得跟数据库字符集一致。其它就只能自求多福了。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;&lt;br /&gt;5.NLS_LANG&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;对&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;ODP.NET&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;的影响&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun"&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca')"&gt;&lt;img  id="code_img_opened_77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca" style="display: none" onclick="cnblogs_code_hide('77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca"&gt;&#xD;
&lt;div&gt;cmd.CommandText&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;charset_test&amp;nbsp;where&amp;nbsp;id=6&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;;&lt;br /&gt;OracleDataReader&amp;nbsp;odr&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&lt;br /&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(odr.Read())&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleString&amp;nbsp;c1&amp;nbsp;=&amp;nbsp;odr.GetOracleString(&lt;span style="color: #800080"&gt;1&lt;/span&gt;);&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;varchar2&amp;nbsp;field,&amp;nbsp;value&amp;nbsp;&amp;#8216;&amp;#230;&amp;#8217;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleString&amp;nbsp;c2&amp;nbsp;=&amp;nbsp;odr.GetOracleString(&lt;span style="color: #800080"&gt;2&lt;/span&gt;);&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;nvarchar2&amp;nbsp;field,&amp;nbsp;value&amp;nbsp;&amp;#8216;&amp;#230;&amp;#8217;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;bs1&amp;nbsp;=&amp;nbsp;c1.GetNonUnicodeBytes();&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;230(using&amp;nbsp;WE8MSWIN1252);63(using&amp;nbsp;US7ASCII)&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;bs3&amp;nbsp;=&amp;nbsp;c2.GetNonUnicodeBytes();&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;230(using&amp;nbsp;WE8MSWIN1252);63(using&amp;nbsp;US7ASCII)&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;唯一受客户端&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;影响的是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;OracleString&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;GetNonUnicodeBytes()&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;方法，此方法依赖于客户端本地设置的字符集，例如我们把&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LANG&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;从&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AMERICAN_AMERICA.WE8MSWIN1252&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;改成&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AMERICAN_AMERICA.US7ASCII&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: SimSun"&gt;其中&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;230&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;HexE6&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）正是字符&amp;#8216;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#230;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&amp;#8217;的编码，而&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;63&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;（即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Hex3F&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;）是&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;中的问号（由于&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字符集中没有&amp;#8216;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;&amp;#230;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;&amp;#8217;，故用问号代替）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 3.75pt; line-height: 15.75pt"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;&lt;br /&gt;6.关于&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2, NVARCHAR2&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #3366ff; font-family: SimSun"&gt;的其它问题&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 3.75pt; line-height: 15.75pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NVARCHAR2(N)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，其中的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;N&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;是指字符数，不是字节数。不过其最大长度是以字节为单位，即&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字节。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 3.75pt; line-height: 15.75pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2(N)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，其中的&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;N&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;可能是指字符数，也可能是指字节数。你可以显式地在声明的时候指定，比如&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2(10 BYTE)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;或者&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2(10 CHAR)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;，未显式指明时，则由参数&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;NLS_LENGTH_SEMANTICS&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;决定。需要注意的是你能成功声明&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;VARCHAR2(4000 CHAR)&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;并不能保证你能真的存储&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;个字符，如果超过&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;4000&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;字节，该报错&lt;/span&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;Oracle&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;还是会报错。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-size: 12pt; color: #3366ff; font-family: SimSun"&gt;&lt;strong&gt;【参考及引用】：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;1. &lt;/span&gt;&lt;a href="http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html"&gt;&lt;span&gt;http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;2. &lt;a href="http://www.laoxiong.net/category/oracle/orainternal/page/2"&gt;http://www.laoxiong.net/category/oracle/orainternal/page/2&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;3. &lt;a href="http://en.wikipedia.org/wiki/Windows-1252"&gt;http://en.wikipedia.org/wiki/Windows-1252&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;4. &lt;a href="http://en.wikipedia.org/wiki/ASCII"&gt;http://en.wikipedia.org/wiki/ASCII&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;5. &lt;a href="http://en.wikipedia.org/wiki/Code_page_936"&gt;http://en.wikipedia.org/wiki/Code_page_936&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;6. &lt;a href="http://en.wikipedia.org/wiki/Code_page_437"&gt;http://en.wikipedia.org/wiki/Code_page_437&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;7. &lt;a href="http://en.wikipedia.org/wiki/UTF-8"&gt;http://en.wikipedia.org/wiki/UTF-8&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;8. &lt;a href="http://en.wikipedia.org/wiki/UTF-16/UCS-2"&gt;http://en.wikipedia.org/wiki/UTF-16/UCS-2&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;9. &lt;a href="http://en.wikipedia.org/wiki/UTF-32/UCS-4"&gt;http://en.wikipedia.org/wiki/UTF-32/UCS-4&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;10. &lt;a href="http://en.wikipedia.org/wiki/GB_18030"&gt;http://en.wikipedia.org/wiki/GB_18030&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;11. &lt;a href="http://en.wikipedia.org/wiki/Unicode"&gt;http://en.wikipedia.org/wiki/Unicode&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;12. OReilly Oracle PL SQL Programming 5th Edition&lt;span style="font-family: SimSun"&gt;，&lt;/span&gt;Steven Feuerstein, Bill Pribyl&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;13. &lt;a href="http://www.laruence.com/2009/08/22/1059.html"&gt;http://www.laruence.com/2009/08/22/1059.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;14. &lt;a href="http://en.wikipedia.org/wiki/Windows_code_page"&gt;http://en.wikipedia.org/wiki/Windows_code_page&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-bottom: 0pt"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2245410.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/11/11/2245410.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/10/12/2208153.html</id><title type="text">ORACLE HANDBOOK系列之七：时间与时区（Time and Time Zone）</title><summary type="text">本文介绍了Oracle中与时区相关的内容，包括与其关联的数据类型、参数、函数等等，同时介绍了时区转换的基本概念以及使用ODP.NET在应用程序中设置客户端的时区。</summary><published>2011-10-12T01:49:00Z</published><updated>2011-10-12T01:49:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/10/12/2208153.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/10/12/2208153.html"/><content type="html">&lt;div&gt;&lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;一）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;中的四种时间类型&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Date&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Timestamp&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Timestamp with local time zone&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Timestamp with time zone&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;这四种类型中，前两个与时区完全无关，它们的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8220;&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;行为&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;就像&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;varchar2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;或者&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;number&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;类型一样，就是你插入时是什么值，那么存储的也是一样的值，同时查询出来的也是一样的值（包括你在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;.NET&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;环境下用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ADO.NET&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;或者&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ODP.NET&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;进行查询），不存在任何所谓的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8220;&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;参数&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;设置可以改变它们（当然，你可以改变它们的显示格式，但不是值）。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;后两个类型则跟时区信息紧密相关，但它们之间又有较大的不同。&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;事实上并不存储时区信息，在向此类型的列中插入值时，用户提供时区信息，但是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;会自动将其转换成&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;dbtimezone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;下的时间进行存储，所以，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;有时区信息，即数据库时区，但它并不存储时区信息。当查询发生时，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;再将时间转化到客户端的时区（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sessiontimezone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;）进行显示。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;不同于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;"&gt;这种把时区的转换委托给&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;服务器，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;timestamp with time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;则是单纯地把你在&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;insert&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;时提供的时间&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;+&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;"&gt;时区信息保存到数据库中。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;二）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;两个与时区相关的参数&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;Dbtimezone&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;Sessiontimezone&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;前者表示数据库时区，后者表示客户端时区。只有&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;才会受时区修改的影响。这两个参数都可以通过&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;alter&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;命令进行修改。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;对客户端操作系统时区的修改将会影响此机器上的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;客户端的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;sessiontimezone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;；修改服务器操作系统时区并不会改变&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;dbtimezone&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&amp;nbsp;dbtimezone&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;dual;&lt;br /&gt;DBTIMEZONE&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;----------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;06&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&amp;nbsp;sessiontimezone&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;dual;&lt;br /&gt;SESSIONTIMEZONE&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;----------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;08&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;00&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;修改客户端或数据库时区的&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;alter&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;命令：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;alter&lt;/span&gt;&amp;nbsp;session&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;time_zone&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+10:00&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;alter&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;database&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;time_zone&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+10:00&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family: SimSun; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;如果数据库中存在有&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family: SimSun; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;类型的&lt;/span&gt; &lt;span style="font-family: SimSun; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;字段，则在修改&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;dbtimezone&lt;/span&gt;&lt;span style="font-family: SimSun; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;时会出现&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;ORA-30079: cannot alter database timezone when database has TIMESTAMP WITH LOCAL TIME ZONE columns&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;三）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;如何向数据库插入一个&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp with time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;或者&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;类型&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;create&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;table&lt;/span&gt;&amp;nbsp;tz1(twtz&amp;nbsp;&lt;span style="color: #0000FF;"&gt;timestamp&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt;&amp;nbsp;time&amp;nbsp;zone,&amp;nbsp;twltz&amp;nbsp;&lt;span style="color: #0000FF;"&gt;timestamp&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt;&amp;nbsp;local&amp;nbsp;time&amp;nbsp;zone);&lt;br /&gt;&lt;br /&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&amp;nbsp;tz1&amp;nbsp;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;(&lt;span style="color: #0000FF;"&gt;timestamp&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;2011-01-03&amp;nbsp;15:00:00.000000&amp;nbsp;+05:00&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #0000FF;"&gt;timestamp&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;2011-01-03&amp;nbsp;15:00:00.000000&amp;nbsp;+05:00&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&amp;nbsp;sessiontimezone&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;dual;&lt;br /&gt;SESSIONTIMEZONE&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;08&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;tz1;&lt;br /&gt;TWTZ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TWLTZ&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;03&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;JAN&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000; font-weight: bold;"&gt;03.00&lt;/span&gt;.&lt;span style="color: #800000; font-weight: bold;"&gt;00.000000&lt;/span&gt;&amp;nbsp;PM&amp;nbsp;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;05&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;00&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800000; font-weight: bold;"&gt;03&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;JAN&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000; font-weight: bold;"&gt;06.00&lt;/span&gt;.&lt;span style="color: #800000; font-weight: bold;"&gt;00.000000&lt;/span&gt;&amp;nbsp;PM&lt;br /&gt;&lt;br /&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;alter&lt;/span&gt;&amp;nbsp;session&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;time_zone&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-06:00&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;SQL&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;tz1;&lt;br /&gt;TWTZ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TWLTZ&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;03&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;JAN&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000; font-weight: bold;"&gt;03.00&lt;/span&gt;.&lt;span style="color: #800000; font-weight: bold;"&gt;00.000000&lt;/span&gt;&amp;nbsp;PM&amp;nbsp;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;05&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;00&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800000; font-weight: bold;"&gt;03&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;JAN&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000; font-weight: bold;"&gt;04.00&lt;/span&gt;.&lt;span style="color: #800000; font-weight: bold;"&gt;00.000000&lt;/span&gt;&amp;nbsp;AM&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;除了采用类似&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;&amp;#8220;+05:00&amp;#8221;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;这种形式的时区标识外，还可以使&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;用时区的缩写，比如&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;GMT,PST&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;等等（可以查看系统视图&lt;/span&gt;&amp;nbsp;&lt;code&gt;&lt;span style="font-size: 12pt; font-family: 'Century Gothic', sans-serif; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;V$TIMEZONE_NAMES&lt;/span&gt;&lt;/code&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;）。如果在&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;insert&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;时未给出&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;时区信息，那么默认为当前客户端的时区。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;四）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;一些与时区相关的函数：&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="688" style="width:516.0pt;margin-left:4.65pt;border-collapse:collapse;"&gt;  &lt;tbody&gt;&lt;tr style="height:15.0pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 15pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p align="center" style="margin-bottom:0cm;margin-bottom:.0001pt;   text-align:center"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;函数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width: 164pt; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-left-style: none; border-left-width: initial; border-left-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 15pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p align="center" style="margin-bottom:0cm;margin-bottom:.0001pt;   text-align:center"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;返回值&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width: 149pt; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-left-style: none; border-left-width: initial; border-left-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 15pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p align="center" style="margin-bottom:0cm;margin-bottom:.0001pt;   text-align:center"&gt;&lt;strong&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;返回值类型&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;SYSTIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Current date/time, in Database TZ&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP WITH TIME ZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Current date/time, in Client Session TZ&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP WITH TIME ZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;LOCALTIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Local date/time in Client Session, but with   no TZ info&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;DBTIMEZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Database time zone, in HH:MI offset from   GMT&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;VARCHAR2&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;SESSIONTIMEZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Session time zone, in HH:MI offset from GMT&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;VARCHAR2&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:57.0pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 57pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;EXTRACT (&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;&lt;em&gt;part&lt;/em&gt;&amp;nbsp;FROM&amp;nbsp;&lt;em&gt;date_time&lt;/em&gt;)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:57.0pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Extracts year, hour, seconds, time zone   name, etc. from a supplied datetime or interval expression.&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:57.0pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;VARCHAR2&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;SYS_EXTRACT_UTC(&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;&lt;em&gt;date_time with TZ&lt;/em&gt;)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;GMT (UTC) time of date/time supplied&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TZ_OFFSET(&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;&lt;em&gt;TZ&lt;/em&gt;)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Returns hour/minute offset from GMT   of&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;&lt;em&gt;TZ&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;VARCHAR2&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;FROM_TZ(&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;&lt;em&gt;timestamp&lt;/em&gt;,&lt;em&gt;TZ&lt;/em&gt;)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Converts a TIMESTAMP to TIMESTAMP WITH TIME   ZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP WITH TIME ZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TO_TIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Convert char + fmt model to TIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:28.5pt"&gt;   &lt;td width="271" valign="bottom" style="width: 203pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: none; border-top-width: initial; border-top-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; height: 28.5pt; background-position: initial initial; background-repeat: initial initial; "&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TO_TIMESTAMP_TZ&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="219" valign="bottom" style="width:164.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;Convert char + fmt model to TIMESTAMP WITH   TIME ZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="199" valign="bottom" style="width:149.0pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   background:white;padding:0cm 5.4pt 0cm 5.4pt;height:28.5pt"&gt;   &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; font-size: 10pt; "&gt;TIMESTAMP WITH TIME ZONE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;五）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;时区的基本换算&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;时区分东西，东时区都带&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;+&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;号标识，西时区用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;-&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;号。在一个特定的时间点，时区号越大（考虑正负号）的地方，时间越晚，比如北京在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;+08:00&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;区&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;, St. Louis&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;-06:00&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;区，北京已经是傍晚了，&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;St. Louis&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;还在凌晨，它们之前相差即&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;+08:00-(-06:00)=14&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;（受夏时制的影响，可能会有一个小时的误差）。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;六）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;应该选择哪种时间类型？&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;如果需要记录的时间精度超过秒，选择&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;类型。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;如果需要将时间在数据库时区与客户端时区之间进行自动转换，选择&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp with local time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;如果需要记录客户插入的时区信息，选择&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp with time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;七）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;ODP.NET&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;OracleGlobalization&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;对于&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;timestamp with time zone&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;类型，由于包含了原始时区信息，所以应用程序中对其进行手动的转换也不困难。除了手动方法，我们还可以通过设置&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;OracleGlobalization&lt;/span&gt;&lt;span style=" font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;下的相关属性让&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;"&gt;ODP.NET&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Courier New&amp;quot;;"&gt;为你进行自动转换。看一个例子：&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;conn.Open();&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;connection&amp;nbsp;should&amp;nbsp;be&amp;nbsp;opened&amp;nbsp;before&amp;nbsp;SetSessionInfo()&amp;nbsp;could&amp;nbsp;be&amp;nbsp;invoked.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;br /&gt;&lt;/span&gt;OracleGlobalization&amp;nbsp;og&amp;nbsp;=&amp;nbsp;OracleGlobalization.GetClientInfo();&lt;br /&gt;og.TimeZone&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;America/Chicago&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;;&lt;br /&gt;OracleGlobalization.SetThreadInfo(og);&lt;br /&gt;conn.SetSessionInfo(og);&lt;br /&gt;&lt;span style="color: #008000; "&gt;//&lt;br /&gt;&lt;/span&gt;OracleCommand&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff; "&gt;new&lt;/span&gt;&amp;nbsp;OracleCommand();&lt;br /&gt;cmd.Connection&amp;nbsp;=&amp;nbsp;conn;&lt;br /&gt;cmd.CommandText&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;select&amp;nbsp;twtz&amp;nbsp;from&amp;nbsp;tz1&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;;&lt;br /&gt;OracleDataReader&amp;nbsp;dr&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&lt;br /&gt;&lt;span style="color: #0000ff; "&gt;if&lt;/span&gt;&amp;nbsp;(dr.HasRows)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff; "&gt;while&lt;/span&gt;&amp;nbsp;(dr.Read())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleTimeStampTZ&amp;nbsp;otstz&amp;nbsp;=&amp;nbsp;dr.GetOracleTimeStampTZ(dr.GetOrdinal(&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;twtz&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;twtz:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;otstz.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;dr.Close();&lt;br /&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;an&amp;nbsp;alias&amp;nbsp;is&amp;nbsp;necessary&amp;nbsp;when&amp;nbsp;using&amp;nbsp;'AT&amp;nbsp;LOCAL'&amp;nbsp;predicate&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;cmd.CommandText&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;select&amp;nbsp;twtz&amp;nbsp;AT&amp;nbsp;LOCAL&amp;nbsp;as&amp;nbsp;twtz&amp;nbsp;from&amp;nbsp;tz1&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;;&lt;br /&gt;dr&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&lt;br /&gt;&lt;span style="color: #0000ff; "&gt;if&lt;/span&gt;&amp;nbsp;(dr.HasRows)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff; "&gt;while&lt;/span&gt;&amp;nbsp;(dr.Read())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleTimeStampTZ&amp;nbsp;otstz&amp;nbsp;=&amp;nbsp;dr.GetOracleTimeStampTZ(dr.GetOrdinal(&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;twtz&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&lt;span style="color: #800000; "&gt;twtz&amp;nbsp;AT&amp;nbsp;LOCAL:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; "&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;otstz.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;dr.Close();&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;output:&lt;/span&gt;&lt;br /&gt;twtz:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080; "&gt;03&lt;/span&gt;-JAN-&lt;span style="color: #800080; "&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800080; "&gt;03.00&lt;/span&gt;.&lt;span style="color: #800080; "&gt;00.000000&lt;/span&gt;&amp;nbsp;PM&amp;nbsp;+&lt;span style="color: #800080; "&gt;05&lt;/span&gt;:&lt;span style="color: #800080; "&gt;00&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: verdana, 'courier new'; line-height: 21px; font-size: 8pt; "&gt;twtz&amp;nbsp;AT&amp;nbsp;LOCAL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="line-height: 21px; color: #800080; font-size: 8pt; "&gt;03&lt;/span&gt;&lt;span style="font-family: verdana, 'courier new'; line-height: 21px; font-size: 8pt; "&gt;-JAN-&lt;/span&gt;&lt;span style="line-height: 21px; color: #800080; font-size: 8pt; "&gt;11&lt;/span&gt;&lt;span style="font-family: verdana, 'courier new'; font-size: 14px; line-height: 21px; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: 21px; color: #800080; font-size: 8pt; "&gt;04.00&lt;/span&gt;&lt;span style="font-family: verdana, 'courier new'; line-height: 21px; font-size: 8pt; "&gt;.&lt;/span&gt;&lt;span style="line-height: 21px; color: #800080; font-size: 8pt; "&gt;00.000000&lt;/span&gt;&lt;span style="font-family: verdana, 'courier new'; line-height: 21px; font-size: 8pt; "&gt;&amp;nbsp;AM&amp;nbsp;AMERICA/CHICAGO&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;可以看到当设置了时区，并在&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;sql&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;语句中使用了&amp;#8216;&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;AT LOCAL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;&amp;#8217;后，原来的时间被自动转换到了芝加哥的时间（芝加哥在西&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;6&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;区，所以与原时间的时区东&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;5&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;区差为&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;11&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;"&gt;小时）。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:6.0pt"&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2208153.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/10/12/2208153.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/08/23/2151030.html</id><title type="text">ORACLE HANDBOOK系列之六：VPD</title><summary type="text">VPD，Oracle Virtual Private Database，即【Oracle虚拟专用数据库】，通过应用一些策略，使得用户只能访问被允许访问的那部分数据。文章通过完整的实例介绍VPD的简单应用，希望对初学者有帮助。</summary><published>2011-08-23T09:15:00Z</published><updated>2011-08-23T09:15:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/08/23/2151030.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/08/23/2151030.html"/><content type="html">&lt;div&gt;&lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VPD&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle Virtual Private Database&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;，即【&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;虚拟专用数据库】，通过应用一些策略，使得用户只能访问被允许访问的那部分数据。&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;其原理相对简单，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;根据策略自动为相应用户提交的语句添加&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Where&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;句，从而控制用户可以访问和操作的数据。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;首先我们准备演示用的几张表，并插入少量的测试数据：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="color: black; "&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_clothing(&lt;br /&gt;clothing_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;type&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;30&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;brand&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;30&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;descripton&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_clothing&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10002&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;jacket&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ABC&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;autumn&amp;nbsp;style&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_clothing&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10003&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;t-shirt&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;XYZ&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;summer&amp;nbsp;style&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;commit&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_books(&lt;br /&gt;book_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;30&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;author&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_books&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10005&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Country&amp;nbsp;Driving&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Peter&amp;nbsp;Hessler&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_books&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10006&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Life&amp;nbsp;without&amp;nbsp;limits&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Nick&amp;nbsp;Vujicic&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;commit&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt; &lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:#00B050;"&gt;（以上两个表模拟一个简单的库存情况，库中有两类物品，服装、图书。这里我们需要满足两个表中的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:#00B050;"&gt;的唯一性（可以通过&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;sequence&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:#00B050;"&gt;来实现）。）&lt;/span&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="color: black; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: black; "&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_users(&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;user_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;user_privilege&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_users&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Jack&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_users&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Rose&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt; &lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:#00B050;"&gt;（这个表存储用户的权限信息，其中的权限即后表&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;vpdsample_privileges&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:#00B050;"&gt;中的权限&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:#00B050;"&gt;字段。）&lt;/span&gt;&lt;span style=" font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:black;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_privileges(&lt;br /&gt;privilege_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;object_id&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_privileges&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10002&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_privileges&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10005&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_privileges&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10003&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_privileges&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10006&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;/span&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family: SimSun; "&gt;（这个表存储每个权限&lt;/span&gt;&lt;span style="font-family: 'Century Gothic', sans-serif; "&gt;ID&lt;/span&gt;&lt;span style="font-family: SimSun; "&gt;对应的权限信息，即对哪些对象（服装或图书）有权限。）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;第二步，我们要创建一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（实际上是【&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;名称空间】）。可以简单地把&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;理解为一个定义在内存中的容器，在此容器中我们可以定义若干个键值对，这些键值对可以在一定的范围内被共享（比如同一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;session&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中，或者同一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;实例中）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;首先，使用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;system&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;用户登录，赋予创建者相应的权限：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;grant create any context to &lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;user1&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;然后通过：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;CREATE&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt; &lt;strong&gt;OR&lt;/strong&gt; &lt;strong&gt;REPLACE&lt;/strong&gt; &lt;strong&gt;CONTEXT&lt;/strong&gt; VPD &lt;strong&gt;USING&lt;/strong&gt; pkg_vpdsample &lt;strong&gt;ACCESSED&lt;/strong&gt; &lt;strong&gt;GLOBALLY&lt;/strong&gt;;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这里我们创建了一个叫&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;vpd&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;using&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;后面的是一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PLSQL package&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的名字，出于安全性考虑，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;需要你在创建&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;时指定一个包名，表示后续对些&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的修改只能通过此包中的存储过程进行修改，不能通过&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;dbms_session.set_context()&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;直接进行修改。创建&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;时，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;package&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;不存在并不会导致编译错误。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;最后&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;accessed globally&amp;#8217;&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;是一个可选项，如果未添加此项，表示此&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;使用范围是某一&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;session&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;；如果指定了此项，则表示该&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;可以在整个数据库实例范围内共享。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;欲删除&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;同样需要赋予相应的权限：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;grant drop any context to &lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;user1&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;drop context VPD;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;第三步，建立一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;package&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（即上面的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;pkg_vpdsample&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;），包中的各个函数及存储过程的作用会随后逐一给出：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PACKAGE&amp;nbsp;pkg_vpdsample&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;enable_vpd;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;disable_vpd;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;set_context(p_user_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;gen_vpd_predicate(p_column_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;apply_vpd_clothing(p1&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,p2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;apply_vpd_books(p1&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,p2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PACKAGE&amp;nbsp;BODY&amp;nbsp;pkg_vpdsample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;enable_vpd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_SESSION.set_context(namespace&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPD&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attribute&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ENABLE&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;1&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;======================&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;disable_vpd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_SESSION.set_context(namespace&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPD&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attribute&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ENABLE&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;0&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;======================&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;set_context(p_user_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_privilege&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;user_privilege&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;l_privilege&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;vpdsample_users&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;user_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_user_name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_SESSION.set_identifier(client_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;l_privilege);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;======================&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;gen_vpd_predicate(p_column_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_vpd_flag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_privilege&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_vpd_flag&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NVL(SYS_CONTEXT(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPD&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ENABLE&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;0&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;l_vpd_flag&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;THEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ELSE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l_privilege&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;SYS_CONTEXT(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;USERENV&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;CLIENT_IDENTIFIER&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;l_privilege&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;THEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;1=2&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ELSE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_column_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;nbsp;IN&amp;nbsp;(SELECT&amp;nbsp;object_id&amp;nbsp;FROM&amp;nbsp;vpdsample_privileges&amp;nbsp;WHERE&amp;nbsp;privilege_id=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;l_privilege&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;)&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;======================&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;apply_vpd_clothing(p1&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;p2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;gen_vpd_predicate(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;clothing_id&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;======================&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;apply_vpd_books(p1&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;p2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RETURN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;gen_vpd_predicate(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;book_id&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;enable_vpd,disable_vpd&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;：这两个存储过程用于设置&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;下的一个自定义属性&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;enable&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;表是启用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;0&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;表禁用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，由于我们在创建此&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;时指定了&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;accessed globally&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，所以这些属性是可以被跨&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;session&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;访问的。这两个存储过程调用了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;dbms_session&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，因此需要被赋予相应的权限：&lt;/span&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;grant execute on dbms_session to user1;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;set_context&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;：上面我们提到了&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，并且在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;enable_vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;disable_vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中使用了&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;dbms_session.set_context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;来设置自定义的属性，其实除了这样自定义的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;外，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;还提供了预定义的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context &amp;#8217;userenv&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，该名称空间下有若干预定义的属性，比如&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;client_identifier&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，设置此属性我们不使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;set_context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，而是使用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;dbms_session.set_identifier()&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;本例中此存储过程根据传入的用户名，查找到该用户的权限&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，并将此&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;作为&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;client_identifier&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;保存到&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context &amp;#8217;userenv&amp;#8217;&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中，以便后续使用。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;在实际应用中，此存储过程应该是由外部的应用程序调用的，应用程序可以在登录验证完成后，调用此存储过程写入&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;context&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;gen_vpd_predicate&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;：根据传入的字段名称生成一个语法正确的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;where&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;子句。这里首先判断了是否启用了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，未设置&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd.enable&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;属性的也认为的已经启用了。随后判断是否已设置&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;userenv.client_identifier&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;属性，如果未设置，则返回一个始终为&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;false&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;where&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;子句以防止用户查看数据。最后生成的语句中，根据取到的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;client_identifier&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（即用户的权限&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）查找权限表&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpdsample_privileges&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;得到该用户有权限的所有对象&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;apply_vpd_clothing, apply_vpd_books&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;：由名字可见，这两个函数将被用于两个不同的表，因为服装表与图书表所用于权限验证的字段有着不同的名字。另外，大家可以看到这两个将被用于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的函数都有两个看似没用的参数&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;p1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;p2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，这是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;接口的要求，第一个用于接收&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;schema&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;名，第二个用于接收&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;table/view/synonym&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;名称，我们定义函数必须符合接口的要求。当然除了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;p1,p2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;外，你可以有自己额外的参数。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;一切准备完毕，开始调用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;提供的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;dbms_rls&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;包应用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;vpd&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;策略，在调用之前，需要赋予用户相应权限：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;grant execute on dbms_rls to &lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:#00B050;"&gt;user1&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;; color:#00B050;"&gt;;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;然后：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;dbms_rls.add_policy(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;object_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPDSAMPLE_CLOTHING&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,policy_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;POL_CLOTHING&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,policy_function&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;PKG_VPDSAMPLE.APPLY_VPD_CLOTHING&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;dbms_rls.add_policy(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;object_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPDSAMPLE_BOOKS&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,policy_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;pol_books&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,policy_function&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;pkg_vpdsample.apply_vpd_books&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;其中&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;policy_name&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;可以自定义。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;随后我们启用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;vpd&lt;/span&gt;&lt;span style=" font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;pkg_vpdsample.enable_vpd;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;（需要说明的是，&lt;/span&gt;&lt;span style="font-size:9.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;DBMS_RLS&lt;/span&gt;&lt;a name="sthref1299" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.cnblogs.com/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;包本身有&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family: &amp;quot;Courier New&amp;quot;;color:black;"&gt;ENABLE_POLICY()&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;方法用于启用或禁用一个&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family: &amp;quot;Courier New&amp;quot;;color:black;"&gt;vpd&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;策略，但它只能一次启用&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family: &amp;quot;Courier New&amp;quot;;color:black;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;禁用一张表上的一个&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family: &amp;quot;Courier New&amp;quot;;color:black;"&gt;vpd&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;策略，为了一次性启用&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family: &amp;quot;Courier New&amp;quot;;color:black;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;禁用所有表上的&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family: &amp;quot;Courier New&amp;quot;;color:black;"&gt;vpd&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:9.0pt;font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;; color:black;"&gt;策略，可以采取类似上面的做法。）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;并设置&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;context&lt;/span&gt;&lt;span style=" font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;pkg_vpdsample.set_context(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Jack&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;随后我们查询&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;vpdsample_clothing&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;表，只返回了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;为&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;10002&lt;/span&gt;&lt;span style=" font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;的服装信息；查询&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;vpdsample_books&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;也类似，只返回了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;ID&lt;/span&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;为&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;10005&lt;/span&gt;&lt;span style=" font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;的图书信息。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;可以更换用户：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;pkg_vpdsample.set_context(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Rose&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;span style="font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;删除&lt;/span&gt;&lt;span style="font-family:&amp;quot;Courier New&amp;quot;;color:black;"&gt;vpd&lt;/span&gt;&lt;span style=" font-family:SimSun;Courier New&amp;quot;;Courier New&amp;quot;;Courier New&amp;quot;;color:black;"&gt;策略则使用：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;font  face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;dbms_rls.drop_policy(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;object_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPDSAMPLE_CLOTHING&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,policy_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;POL_CLOTHING&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;dbms_rls.drop_policy(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;object_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VPDSAMPLE_BOOKS&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,policy_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;pol_books&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:4.0pt"&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2151030.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/08/23/2151030.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/06/08/2075492.html</id><title type="text">ORACLE HANDBOOK系列之五：事务（Transaction）</title><summary type="text">1）概述，2）事务级与语句级，3）隐式保存点，4）触发器与事务，5）Database link与事务，6）自治事务</summary><published>2011-06-08T09:15:00Z</published><updated>2011-06-08T09:15:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/06/08/2075492.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/06/08/2075492.html"/><content type="html">&lt;div&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;概述&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;（在一个会话中）事务何时开始：当数据库遇到第一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DML&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;UPDATE/INSERT/DELETE/MERGE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;语句。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;（在一个会话中）事务何时结束：结束于第一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;COMMIT/ROLLBACK/DDL/GRANT/REVOKE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;。对于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DLL/GRANT/REVOKE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;，这些命令的内部嵌套了一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;COMMIT&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;语句。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;上面的两句话是基本教义，就好比&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;8&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;荣&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;8&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;耻之于和谐社会一样重要。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;事务级与语句级&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TABLE t_trans_sample(fnum NUMBER(3));&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-1&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-2&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;根据教义，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;属于同一事务，此时如果我们执行&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;commit/rollback&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，两条语句将同时被提交&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;/&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;回滚，即&amp;#8216;&lt;u&gt;事务级&lt;/u&gt;&amp;#8217;提交&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;/&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;回滚。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;如果是这样呢：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-1&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&amp;#8216;a&amp;#8217;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-2&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;出错，此时&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;"&gt;只有出错的语句被回滚（当然受该语句影响的可能是多行数据），&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;仍然处于&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8216;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;未提交&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;状态，即&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &amp;#8216;&lt;/span&gt;&lt;u&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;语句级&lt;/span&gt;&lt;/u&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8217;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;回滚。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;; background:#D9D9D9;"&gt;总结一下：用户显式执行的提交&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;; background:#D9D9D9;"&gt;/&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;background:#D9D9D9;"&gt;回滚，通常总是&amp;#8216;事务级&amp;#8217;的；当语句出错时由&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;background:#D9D9D9;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;; background:#D9D9D9;"&gt;自动执行的回滚，通常总是&amp;#8216;语句级&amp;#8217;的。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;隐式保存点&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-1&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-2&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&amp;#8216;a&amp;#8217;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-3&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;此时的结果是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;也被自动回滚了，只剩下&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的结果处于未提交状态。为什么，不是说应该是语句级的么？这是因为，&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;执行&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;匿名块、或者调用存储过程，会在紧挨着调用之前插入一个隐式的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;savepoint&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;，当块内部出错并自动回滚时，并非是语句级的，而是回滚到此&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;savepoint&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;为止&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;&lt;br /&gt;但是，如果语句块中有&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;exception&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;处理模块：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-1&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-2&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&amp;#8216;a&amp;#8217;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-3&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;when&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;others&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;then&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;此时只有&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-3&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;被回滚，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;跟&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;sql-2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;仍处于未提交状态。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;&lt;br /&gt;还有一点需要注意，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;savepoint&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;只针对回滚的情况，对于提交操作无影响，下面示例中的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;commit&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;会将三条结果都提交：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-1&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-2&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;sql-3&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;commit&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;触发器与事务&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;触发器代码中不允许发出任何事务控制语句，触发器与触发该触发器的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;语句同属于一个事务，它只能随着外部事务的提交&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;/&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;回滚而提交&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;/&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;回滚。如果触发器内的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DML&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;（如果有的话）出错，则此&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DML&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;被回滚，同时引发此触发器的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DML&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;也将被回滚。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;（但在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;oracle8i &lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;以及更高的版本中，你可以创建作为自治事务而执行的触发器，在这种情况下，触发器可以做提交或回滚操作，而与触发该触发器的外部&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;所在的事务无关，自治事务见后文）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5 Db link&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与事务&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;可以透明地处理分布式事务，意思就是，即便一个事务中涉及的表可能位于不同的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;oracle server&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;上（通过&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Db link&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;进行访问），对事务本身没有任何影响。这里就不作示例测试了。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;自治事务&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;普通的事务是无法进行嵌套的，例如你有一个大事务涉及&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;10&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;条&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DML&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;，你想先&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;commit&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;中间的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;"&gt;条是无法实现的。自治事务的出现很好地解决了这个问题，它可以使嵌套中的事务保持各自的独立，对比下面两个例子：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;commit&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;declare&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pragma&amp;nbsp;autonomous_transaction;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;begin&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;insert&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;into&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_trans_sample&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;values&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;commit&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）中两条语句都被提交，这在前面的文章里已经提过了，（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）中只有第二个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;insert&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;语句被提交，第一个仍然处于未提交的状态，可以看到自治事务的效果。在实际应用中，自治事务常常用于记录错误日志，通常来说，记录错误日志的事务应该独立出来，不应该与主事务杂揉在一起，这种情况下就应该使用自治事务了。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2075492.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/06/08/2075492.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/04/21/2023472.html</id><title type="text">ORACLE HANDBOOK系列之四：ODP.NET与复杂的PL/SQL数据类型(Using ODP.NET To Deal With Complex PLSQL Data Types)</title><summary type="text">本文通过实例详细地介绍了C#如何使用ODP.NET处理几类常见的复杂PL/SQL类型，包括：1.引用游标（REF Cursor）；2.关联数组（Associative array）；3.嵌套表（Nested table）；4.动态数组（VARRAY）；5.对象（Object）；6.对象集合（Object collection）</summary><published>2011-04-21T05:45:00Z</published><updated>2011-04-21T05:45:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/04/21/2023472.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/04/21/2023472.html"/><content type="html">&lt;div&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;在开始介绍之前，先给出文章里用到的所有&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;代码：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（类型定义）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;T_Nested_Tab_Str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;25&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;T_Object&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OBJECT&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;employee_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;number&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br /&gt;&amp;nbsp;last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;varchar2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;25&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;T_VARRAY_STR&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;VARRAY(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;25&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;T_Nested_Tab_Obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Object;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（包的声明）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PACKAGE&amp;nbsp;pkg_odp_dotnet&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;TYPE&amp;nbsp;T_Ref_Cursor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;REF&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CURSOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;TYPE&amp;nbsp;T_Asso_Array_Num&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk.employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;TYPE&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PLS_INTEGER;&lt;br /&gt;&amp;nbsp;TYPE&amp;nbsp;T_Asso_Array_Str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk.last_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;TYPE&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PLS_INTEGER;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_ref_cursor(p_ref_cursor&amp;nbsp;OUT&amp;nbsp;T_Ref_Cursor);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_sys_refcursor(p_sys_refcursor&amp;nbsp;OUT&amp;nbsp;SYS_REFCURSOR);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_asso_array_num_in(p_asso_array_num&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Asso_Array_Num);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_asso_array_num_out(p_asso_array_num&amp;nbsp;OUT&amp;nbsp;T_Asso_Array_Num);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_asso_array_str_out(p_asso_array_str&amp;nbsp;OUT&amp;nbsp;T_Asso_Array_Str);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_nested_tab_str_in(p_nested_tab_str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Nested_Tab_Str);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_nested_tab_str_out(p_nested_tab_str&amp;nbsp;OUT&amp;nbsp;T_Nested_Tab_Str);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_obj_in(p_obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Object);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_nested_tab_obj_in(p_nested_tab_obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Nested_Tab_Obj);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_varray_str_in(p_varray_str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Varray_Str);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（包体）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PACKAGE&amp;nbsp;BODY&amp;nbsp;pkg_odp_dotnet&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;ref&amp;nbsp;cursor&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;employees&amp;nbsp;whose&amp;nbsp;id&amp;nbsp;less&amp;nbsp;than&amp;nbsp;105&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_ref_cursor(p_ref_cursor&amp;nbsp;OUT&amp;nbsp;T_Ref_Cursor)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OPEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_ref_cursor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id,first_name,last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;105&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;pre-defined&amp;nbsp;sys_refcursor&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;employees&amp;nbsp;whose&amp;nbsp;id&amp;nbsp;less&amp;nbsp;than&amp;nbsp;105&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_sys_refcursor(p_sys_refcursor&amp;nbsp;OUT&amp;nbsp;SYS_REFCURSOR)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OPEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_sys_refcursor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id,first_name,last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;105&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;input&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;associative&amp;nbsp;array,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;number&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop&amp;nbsp;through&amp;nbsp;each&amp;nbsp;employee&amp;nbsp;id&amp;nbsp;in&amp;nbsp;the&amp;nbsp;given&amp;nbsp;associative&amp;nbsp;array,&amp;nbsp;then&amp;nbsp;update&amp;nbsp;its&amp;nbsp;salary&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_asso_array_num_in(p_asso_array_num&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Asso_Array_Num)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx&amp;nbsp;PLS_INTEGER;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_asso_array_num.FIRST;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHILE&lt;/span&gt;&lt;span style="color: #000000;"&gt;(idx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;NOT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;salary&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;salary&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_asso_array_num(idx);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_asso_array_num.&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NEXT&lt;/span&gt;&lt;span style="color: #000000;"&gt;(idx);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;output&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;associative&amp;nbsp;array,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;varchar2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;employees&amp;nbsp;whose&amp;nbsp;id&amp;nbsp;less&amp;nbsp;than&amp;nbsp;105&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_asso_array_str_out(p_asso_array_str&amp;nbsp;OUT&amp;nbsp;T_Asso_Array_Str)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BULK&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;COLLECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_asso_array_str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;105&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;output&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;associative&amp;nbsp;array,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;number&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;employees&amp;nbsp;whose&amp;nbsp;id&amp;nbsp;less&amp;nbsp;than&amp;nbsp;105&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_asso_array_num_out(p_asso_array_num&amp;nbsp;OUT&amp;nbsp;T_Asso_Array_Num)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BULK&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;COLLECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_asso_array_num&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;105&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;input&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;nested&amp;nbsp;table,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;number&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop&amp;nbsp;through&amp;nbsp;each&amp;nbsp;last&amp;nbsp;name&amp;nbsp;in&amp;nbsp;the&amp;nbsp;given&amp;nbsp;nested&amp;nbsp;table,&amp;nbsp;then&amp;nbsp;update&amp;nbsp;its&amp;nbsp;salary&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_nested_tab_str_in(p_nested_tab_str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Nested_Tab_Str)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FORALL&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_nested_tab_str.FIRST..p_nested_tab_str.LAST&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;salary&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;salary&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;last_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_nested_tab_str(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;output&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;nested&amp;nbsp;table,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;varchar2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieve&amp;nbsp;the&amp;nbsp;employees&amp;nbsp;whose&amp;nbsp;id&amp;nbsp;less&amp;nbsp;than&amp;nbsp;105&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_nested_tab_str_out(p_nested_tab_str&amp;nbsp;OUT&amp;nbsp;T_Nested_Tab_Str)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BULK&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;COLLECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_nested_tab_str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;105&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;output&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;VARRAY,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;varchar2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop&amp;nbsp;through&amp;nbsp;each&amp;nbsp;last&amp;nbsp;name&amp;nbsp;in&amp;nbsp;the&amp;nbsp;given&amp;nbsp;varray,&amp;nbsp;then&amp;nbsp;update&amp;nbsp;its&amp;nbsp;salary&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_varray_str_in(p_varray_str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Varray_Str)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FORALL&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_varray_str.FIRST..p_varray_str.LAST&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;salary&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;salary&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;last_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_varray_str(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;output&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Update&amp;nbsp;the&amp;nbsp;last_name&amp;nbsp;according&amp;nbsp;to&amp;nbsp;two&amp;nbsp;fields&amp;nbsp;last_name,&amp;nbsp;employee_id&amp;nbsp;in&amp;nbsp;the&amp;nbsp;given&amp;nbsp;object&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_obj_in(p_obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Object)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;last_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_obj.last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_obj.employee_id;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;This&amp;nbsp;proc&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;by&amp;nbsp;.NET&amp;nbsp;to&amp;nbsp;test&amp;nbsp;the&amp;nbsp;output&amp;nbsp;parameter&amp;nbsp;with&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;nested&amp;nbsp;table,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;and&amp;nbsp;the&amp;nbsp;type&amp;nbsp;of&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;element&amp;nbsp;is&amp;nbsp;object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop&amp;nbsp;through&amp;nbsp;each&amp;nbsp;object&amp;nbsp;in&amp;nbsp;the&amp;nbsp;given&amp;nbsp;nested&amp;nbsp;table,&amp;nbsp;then&amp;nbsp;update&amp;nbsp;the&amp;nbsp;last&amp;nbsp;name&amp;nbsp;of&amp;nbsp;employee&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;proc_nested_tab_obj_in(p_nested_tab_obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;T_Nested_Tab_Obj)&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FORALL&amp;nbsp;idx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;p_nested_tab_obj.FIRST..p_nested_tab_obj.LAST&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees_bk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;last_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_nested_tab_obj(idx).last_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employee_id&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;p_nested_tab_obj(idx).employee_id;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;引用游标（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;引用游标作为输出参数的情况十分常见。相较于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;MS SQL Server&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;存储过程无法直接返回结果集，而需要借助&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;实际上是指向服务器内存的指针，也就是说客户端调用获取的是一个指针，它指向服务器内存中的结果集数据。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;虽然可能令熟悉&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;MS SQL Server&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;平台的开发者困惑，但是使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;带来两个明显的好处：&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）它可以延迟数据的交付，客户端获取的只是指针，数据只有在被请求时才传递；&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;在存储过程之间传递结果集，可以最小化对性能影响，毕竟传递的只是指针而不是真实数据。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（使用&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DataReader&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_ref_cursor&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_ref_cursor&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Output;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.RefCursor;&lt;br /&gt;cmd.Parameters.Add(op);&lt;br /&gt;OracleDataReader&amp;nbsp;odr&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;cmd.ExecuteReader();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(odr.HasRows)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(odr.Read())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;odr.GetDecimal(odr.GetOrdinal(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;employee_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;odr.GetString(odr.GetOrdinal(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;first_name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;odr.GetString(odr.GetOrdinal(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;last_name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(s);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（使用&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DataAdapter&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_ref_cursor&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_ref_cursor&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Output;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.RefCursor;&lt;br /&gt;cmd.Parameters.Add(op);&lt;br /&gt;OracleDataAdapter&amp;nbsp;oda&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDataAdapter(cmd);&lt;br /&gt;DataSet&amp;nbsp;ds&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DataSet();&lt;br /&gt;oda.Fill(ds);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ds.Tables[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Rows.Count;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ds.Tables[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Rows[i][&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;employee_id&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ds.Tables[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Rows[i][&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;first_name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ds.Tables[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Rows[i][&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;last_name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(s);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;注意上面的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Tables[0]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，如果有多个输出参数是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，则可以使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Tables[0]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;、&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Tables[1]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，以此类推。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;DataReader&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;似乎无法在有多个输出的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;有情况下使用。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;方便起见，可以使用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;预定义的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;SYS_REFCURSOR&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，这样可以省去&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;定义。在用法上与自定义的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;相同，就不再举具体的实例了。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;关联数组（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;关于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中的集合类型，已经在上一篇文章《&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ORACLE HANDBOOK&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;系统之三&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;:PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中的集合类型&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;(COLLECTIONS IN PL/SQL)&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;》中介绍了（&lt;/span&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/04/07/2008158.html"&gt;http://www.cnblogs.com/KissKnife/archive/2011/04/07/2008158.html&lt;/a&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;），这里介绍&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;交互时如何使用关联数组。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输入参数）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_asso_array_num_in&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_asso_array_num&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Input;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Decimal;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;op.CollectionType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleCollectionType.PLSQLAssociativeArray;&lt;br /&gt;op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;decimal&lt;/span&gt;&lt;span style="color: #000000;"&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;101&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;102&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;};&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;相应的，如果定义的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的元素是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Varchar2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，则&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleParameter.OracleDbType&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;就是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleDbType.Varchar2&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，为&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleParameter.value&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;赋值要使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;string[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输出参数）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  color="#0000FF" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Oracle.DataAccess.Types;&lt;br /&gt;&amp;#8230;&lt;br /&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_asso_array_str_out&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_asso_array_str&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Output;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Varchar2;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;op.CollectionType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleCollectionType.PLSQLAssociativeArray;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;op.Size&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;[]&amp;nbsp;iArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;[op.Size];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iArray.Length;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iArray[i]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;25&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;}&lt;br /&gt;op.ArrayBindSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;iArray;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleString[]&amp;nbsp;osArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(OracleString[])op.Value;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;osArray.GetUpperBound(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(osArray[i].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleParameter.Size&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，如果给定的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Size&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;比实际查询所得的行数小，则会报&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ORA-06513&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;错误，所以如果无法确定实际返回的集合长度，需要往大了取。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleParameter.ArrayBindSize&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，这里集合元素是变长的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，因此需要为每个元素指定其长度，由于表中&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;last_name&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的长度是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;25&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，所以这里定义成了&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;25&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，比&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;25&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;小不会报错，但是可能导致字符串被截断。如果要返回的集合元素是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;NUMBER&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，则可以不指定&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;ArrayBindSize&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleString&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，不要天真地以为可以使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;string[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;数组来接收返回的集合，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;NO&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;！需要&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleString[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;string[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;将导致转化出错。如果要返回的集合元素是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;NUMBER&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，通常用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleDecimal[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;而不能直接用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;decimal[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;通常来说，以集合类型作为输出参数类型的情况相对较少，对于结果集，使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;REF Cursor&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;是更好的选择。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;嵌套表（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;对于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，有两种方案可以选择，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）直接映射成&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中的数组，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）映射成&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的自定义类型。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;第一种方案，需要首先声明一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Factory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类并实现&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;IOracleArrayTypeFactory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;接口，并使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleCustomTypeMappingAttribute(schema.type_name)&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;指定需要映射的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的名称，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;schema.type_name&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;需要大写。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;可以看到我们使用了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OracleDbType.Array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，并且指定了参数的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;UdtTypeName&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。赋值时直接使用了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;string[]&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[OracleCustomTypeMappingAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_STR&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Array_Factory&amp;nbsp;:&amp;nbsp;IOracleArrayTypeFactory&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Array&amp;nbsp;CreateArray(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Array&amp;nbsp;CreateStatusArray(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleUdtStatus[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输入参数）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_nested_tab_str_in&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_nested_tab_str&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Input;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Array;&lt;br /&gt;op.UdtTypeName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_STR&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;King&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Olsen&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;};&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输出参数，同样需要上面的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Factory&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_nested_tab_str_out&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_nested_tab_str&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Output;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Array;&lt;br /&gt;op.UdtTypeName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_STR&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DBNull.Value)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[]&amp;nbsp;result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[])op.Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;result)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(s);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;对比而言，第一种方案中将&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;映射成&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;数组的做法更简洁。下面我们介绍第二种方案，稍微繁杂一点，除了需要&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Factory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类（需要同时实现&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;IOracleArrayTypeFactory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;IOracleCustomTypeFactory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;两个接口）外，它还需要一个自定义类型：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[OracleCustomTypeMappingAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_STR&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Object_Factory&amp;nbsp;:&amp;nbsp;IOracleCustomTypeFactory,&amp;nbsp;IOracleArrayTypeFactory&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IOracleCustomType&amp;nbsp;CreateObject()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Object();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Array&amp;nbsp;CreateArray(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;String[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Array&amp;nbsp;CreateStatusArray(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleUdtStatus[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Object&amp;nbsp;:&amp;nbsp;IOracleCustomType,&amp;nbsp;INullable&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[OracleArrayMapping()]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[]&amp;nbsp;container;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleUdtStatus[]&amp;nbsp;statusArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleUdtStatus[]&amp;nbsp;StatusArray&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;statusArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;statusArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;isNull;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IsNull&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;isNull;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Object&amp;nbsp;Null&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nested_Tab_Mapping_To_Object&amp;nbsp;nt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Object();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nt.isNull&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ToCustomObject(OracleConnection&amp;nbsp;conn,&amp;nbsp;IntPtr&amp;nbsp;pUdt)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;outStatusArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[])OracleUdt.GetValue(conn,&amp;nbsp;pUdt,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;outStatusArray);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;statusArray&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(OracleUdtStatus[])outStatusArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;FromCustomObject(OracleConnection&amp;nbsp;conn,&amp;nbsp;IntPtr&amp;nbsp;pUdt)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleUdt.SetValue(conn,&amp;nbsp;pUdt,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;container,&amp;nbsp;statusArray);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输入参数）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_nested_tab_str_in&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_nested_tab_str&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Input;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Object;&lt;br /&gt;op.UdtTypeName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_STR&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;Nested_Tab_Mapping_To_Object&amp;nbsp;nt&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Mapping_To_Object();&lt;br /&gt;nt.container&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;King&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Olsen&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;};&lt;br /&gt;op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输出参数）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_nested_tab_str_out&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_nested_tab_str&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Output;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Object;&lt;br /&gt;op.UdtTypeName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_STR&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DBNull.Value)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nested_Tab_Mapping_To_Object&amp;nbsp;o&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(Nested_Tab_Mapping_To_Object)op.Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;o.container)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(s);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;动态数组（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRAY&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;用法相同。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;对象（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类型的定义可以参见文章开头的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;T_Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。遇到&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;T_Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;时，处理起来类似于第&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;节中将&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;映射成自定义对象的情况，同样需要一个自定义类型以及一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Factory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[OracleCustomTypeMappingAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_OBJECT&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object_Factory&amp;nbsp;:&amp;nbsp;IOracleCustomTypeFactory&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;virtual&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IOracleCustomType&amp;nbsp;CreateObject()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ora_Object&amp;nbsp;o&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;o;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object&amp;nbsp;:&amp;nbsp;IOracleCustomType,&amp;nbsp;INullable&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;isNull;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employeeId;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;lastName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IsNull&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.isNull;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object&amp;nbsp;Null&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ora_Object&amp;nbsp;mo&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mo.isNull&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;mo;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[OracleObjectMappingAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EMPLOYEE_ID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;EmployeeId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employeeId;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employeeId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[OracleObjectMappingAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;LAST_NAME&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LastName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;lastName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;FromCustomObject(Oracle.DataAccess.Client.OracleConnection&amp;nbsp;conn,&amp;nbsp;System.IntPtr&amp;nbsp;pUdt)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleUdt.SetValue(conn,&amp;nbsp;pUdt,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EMPLOYEE_ID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.EmployeeId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OracleUdt.SetValue(conn,&amp;nbsp;pUdt,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;LAST_NAME&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.LastName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ToCustomObject(Oracle.DataAccess.Client.OracleConnection&amp;nbsp;conn,&amp;nbsp;System.IntPtr&amp;nbsp;pUdt)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.EmployeeId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;((&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;)(OracleUdt.GetValue(conn,&amp;nbsp;pUdt,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EMPLOYEE_ID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.LastName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;((&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)(OracleUdt.GetValue(conn,&amp;nbsp;pUdt,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;LAST_NAME&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（作为输入参数）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_obj_in&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_obj&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Input;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Object;&lt;br /&gt;op.UdtTypeName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_OBJECT&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Ora_Object&amp;nbsp;mo&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object();&lt;br /&gt;mo.EmployeeId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;mo.LastName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;abcd&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;mo;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span  style="font-family: SimSun; "&gt;作为输出参数的情况很简单，这里就不重复了。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6.&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;对象集合（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object collection&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;来到终极篇，所谓对象集合，这里指的是本身是个集合类型，并且集合元素是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，例如我们在最开始定义的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;T_Nested_Tab_Obj&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;由于它是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，则我们可以按照第&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;节中的作法将其转化成&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，于是，我们需要一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Factory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类并实现&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;IOracleArrayTypeFactory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;接口：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[OracleCustomTypeMappingAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_OBJ&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Nested_Tab_Obj_Mapping_To_Array_Factory&amp;nbsp;:&amp;nbsp;IOracleArrayTypeFactory&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Array&amp;nbsp;CreateArray(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Array&amp;nbsp;CreateStatusArray(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleUdtStatus[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;又由于集合的元素是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类型，仿照第&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;节中的做法，我们分别需要一个自定义类型以及一个&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Factory&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类，&lt;u&gt;由于集合元素也是使用的&lt;/u&gt;&lt;/span&gt;&lt;u&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;T_Object&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，所以这两个类与第&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;节中相同，这里不再重复写了&lt;/span&gt;&lt;/u&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。下面我们看看具体的调用代码：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;cmd.CommandText&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pkg_odp_dotnet.proc_nested_tab_obj_in&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;cmd.CommandType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CommandType.StoredProcedure;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;OracleParameter&amp;nbsp;op&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleParameter();&lt;br /&gt;op.ParameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;p_nested_tab_obj&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Direction&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ParameterDirection.Input;&lt;br /&gt;op.OracleDbType&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OracleDbType.Array;&lt;br /&gt;op.UdtTypeName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;HR.T_NESTED_TAB_OBJ&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Ora_Object&amp;nbsp;mo&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object();&lt;br /&gt;mo.EmployeeId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;mo.LastName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;00000&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;Ora_Object&amp;nbsp;mo2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object();&lt;br /&gt;mo2.EmployeeId&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;102&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;mo2.LastName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;00000&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Size&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;op.Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Ora_Object[]&amp;nbsp;{&amp;nbsp;mo,&amp;nbsp;mo2&amp;nbsp;};&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;cmd.Parameters.Add(op);&lt;br /&gt;cmd.ExecuteNonQuery();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;作为输出参数的情况也很容易写，这里就不举例子了，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRAY&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的情况与&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;基本一样，也不举例了。到这里，关于在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中如何处理几类主要的复杂参数类型，已经基本介绍完了，对于一些更为复杂的，比如&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中包含&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;等等情况，不太常见，就不介绍了。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PS&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，虽然&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中的元素也可以是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，但在与&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类型做映射时似乎不能成功，可能根&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类型（即不能通过&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;创建独立的类型）有关，还没有找到相关的文档。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2023472.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/04/21/2023472.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/04/07/2008158.html</id><title type="text">ORACLE HANDBOOK系列之三：PL/SQL中的集合类型(Collections in PL/SQL)</title><summary type="text">详细介绍PL/SQL中的集合类型Associative array，Nested table，VARRAY的声明、初始化及使用。</summary><published>2011-04-07T09:26:00Z</published><updated>2011-04-07T09:26:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/04/07/2008158.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/04/07/2008158.html"/><content type="html">&lt;div&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1)&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;集合的分类&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Times New Roman&amp;quot;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;支持&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Times New Roman&amp;quot;"&gt;3&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;种类型的集合&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;关联数组&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，即&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Index-by table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;嵌套表&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;变长数组&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;（&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRAY&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;它们的区别之一是，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRY&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;既可以被用于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Times New Roman&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;，也可以被直接用于数据库中&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，但是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;不行，&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;也就是说，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;是不能通过&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;语句进行单独创建，只能在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;块&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（或&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Package&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;）&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;中进行定义并使用（即&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;适用范围&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;"&gt;是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL B&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Times New Roman&amp;quot;;"&gt;lock&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;级别），而&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRAY&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;则可以&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;进行创建&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;（即适用范围是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;S&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;Times New Roman&amp;quot;;"&gt;chema&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;级别）&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;它们还可以直接作为数据库表中列的类型&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;Times New Roman&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;BTW&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，为了避免误解，以下显式提到&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8220;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;索引&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的地方，并非指的是数据库表的索引，而是特指访问集合元素时使用的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8220;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;下标&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，即&lt;/span&gt;&lt;em&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Collection_Name(index)&lt;/span&gt;&lt;/em&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;index&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2)&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;集合类型的声明与初始化&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2.1)Associative array&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;首先看一下&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的声明及初始化，示例中的第一部分显示，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;不能使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;来创建。第二部分使用一个匿名&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;块来演示&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;使用，可以看到用法还是相对简单的。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的索引可以是稀疏的（即可以不连续）。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;ib_planguage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PLS_INTEGER;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Warning:&amp;nbsp;Type&amp;nbsp;created&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;compilation&amp;nbsp;errors.&lt;br /&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;SHOW&amp;nbsp;ERROR;&lt;br /&gt;Errors&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;IB_PLANGUAGE:&lt;br /&gt;LINE&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;COL&amp;nbsp;ERROR&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;------&amp;nbsp;-----------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PL&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQL:&amp;nbsp;Compilation&amp;nbsp;unit&amp;nbsp;analysis&amp;nbsp;terminated&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;22&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PLS&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;00355&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;use&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;of&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;pl&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;sql&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;table&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;not&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;allowed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;this&amp;nbsp;context&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;TYPE&amp;nbsp;ib_planguage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PLS_INTEGER;&lt;br /&gt;&amp;nbsp;lang&amp;nbsp;ib_planguage;&lt;br /&gt;&amp;nbsp;idx&amp;nbsp;PLS_INTEGER;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c++&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;idx:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;lang.FIRST;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHILE&lt;/span&gt;&lt;span style="color: #000000;"&gt;(idx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;NOT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(lang(idx));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;lang.&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NEXT&lt;/span&gt;&lt;span style="color: #000000;"&gt;(idx);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;java&lt;br /&gt;c&lt;/span&gt;&lt;span style="color: #808080;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;c#&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2.2)Nested table&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;接着来看&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的声明及初始化，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;既可以通过&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;声明成全局类型，也可以在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;块中声明块级别的类型。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;与&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family: SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;不同，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;变量需要显式初始化，其语法类似于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;C#&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，只是不用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;new&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;关键字。额外地，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;初始化之后还需要调用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;EXTEND&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;过程，扩展此集合的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8220;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;容量&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;#8221;&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;示例的第二部分提供了一种相对简单的初始化方法，即可以在构造器中直接传入集合成员。这种简便的初始化方法不适用于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;nt_planguage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Type&amp;nbsp;created.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang&amp;nbsp;nt_planguage;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nt_planguage();&lt;br /&gt;&amp;nbsp;lang.EXTEND(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c++&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;..lang.&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;COUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(lang(i));&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;java&lt;br /&gt;c#&lt;br /&gt;c&lt;/span&gt;&lt;span style="color: #808080;"&gt;++&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;或者可以简单地写成：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span  style="font-size: 12px;"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang&amp;nbsp;nt_planguage;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nt_planguage(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c++&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;..lang.&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;COUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(lang(i));&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2.3)VARRAY&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;最后我们来看&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRAY&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的声明及初始化，它与&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;比较类似，但仍然存在一些区别，包括&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;(1)VARRAY&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;可以在声明时限制集合的长度，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;EXTEND&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的长度不能大于集合声明时的长度（下例中长度是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;8&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;），但是在给集合成员赋值时，以&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;EXTEND&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;为准，例如下例中可以使用的只有&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;个集合成员。；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;(2)&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;其索引总是连续的，而&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的索引在初始化赋值时是连续的，不过随着集合元素被删除，可能变得不连续。&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;va_planguage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;VARRAY(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;8&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OF&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Type&amp;nbsp;created.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang&amp;nbsp;va_planguage;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;va_planguage();&lt;br /&gt;&amp;nbsp;lang.EXTEND(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;lang(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;):&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c++&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;..lang.&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;COUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(lang(i));&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&amp;nbsp;LOOP;&lt;/div&gt;&lt;p&gt;END；&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span  style="font-family: SimSun; "&gt;同样，也可以简单地写成：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;font  face="'Century Gothic', sans-serif"&gt;&lt;span  style="font-size: 12px;"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang&amp;nbsp;va_planguage;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;va_planguage(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;c++&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;..lang.&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;COUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(lang(i));&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;LOOP;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3)&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;如何选择适用的集合类型&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;通常来说&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;对集合类型的第一选择应该是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;，因为它不需要初始化或者&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;EXTEND&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;操作，并且是迄今为止最高效的集合类型。唯一不足的一点是它只能用于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;而不能直接用于数据库。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;如果你需要允许使用负数索引，应该选择&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Associative array&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;如果你需要使用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;10g&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;11g&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;中的那些集合操作，应该选择&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Nested table&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;"&gt;；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;如果你需要限制集合元素的个数，应该选择&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;VARRAY&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4)&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size:10.5pt;font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;其它&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;一个非常令人费解的地方是，位于&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;语句块中的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;声明，必须使用关键字&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;IS&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，而不能使用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;AS&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，但是在使用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CREATE TYPE&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;声明全局类型时，这两个是通用的。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;本来，说到这里就应该介绍完了，但是，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Oracle&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;引入了&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;OO&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，导致我还要稍微说一下&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;的声明及初始化，因为在某些情况下，你还会遇到集合成员是对象类型的情况。&lt;/span&gt;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;OR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;REPLACE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TYPE&amp;nbsp;o_planguage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OBJECT(lang&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;),lang_desc&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR2&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;Type&amp;nbsp;created.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang&amp;nbsp;o_planguage;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;lang:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;o_planguage(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;java&amp;nbsp;is&amp;nbsp;an&amp;nbsp;OO&amp;nbsp;programming&amp;nbsp;language...&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(lang.lang_desc);&lt;/div&gt;&lt;p&gt;END;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;注意，&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;不能在&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PL/SQL&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;语句块中声明。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;注意&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，我们&lt;strong&gt;不能&lt;/strong&gt;使用如下代码进行初始化：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;lang:=o_planguage();&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;lang.lang:=&amp;#8217;java&amp;#8217;;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;lang.lang_desc:=&amp;#8217;java is an OO programming language&amp;#8230;&amp;#8217;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这样的语法会导致出现&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;{PLS-00306: &lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;调用&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; 'lang' &lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;时参数个数或类型错误&lt;/span&gt;&lt;span style="font-family: &amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;}&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，即&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;类型没有默认的无参构造器。介绍完这个，那么即使集合的成员是&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Object&lt;/span&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;时，也可以如法炮制去声明、初始化了。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom:0cm;margin-bottom:.0001pt"&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2008158.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/04/07/2008158.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/03/26/1996277.html</id><title type="text">ORACLE HANDBOOK系列之二：批量SQL(BULK SQL)</title><summary type="text">本文以实例方式介绍BULK SQL的基本使用。Oracle在PL/SQL中引入了BULK SQL，用于尽量减少PL/SQL – SQL引擎之间的交互，以期提高性能。具体而言，Oracle BULK SQL包括FORALL语句、BULK COLLECT子句。前者将多条语句（通常是DML）一次性发送给SQL引擎；后者将SQL引擎所获得的结果一次性返回给PL/SQL引擎。</summary><published>2011-03-26T06:18:00Z</published><updated>2011-03-26T06:18:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2011/03/26/1996277.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/03/26/1996277.html"/><content type="html">&lt;div&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;PL/SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引入过程化语言的相应元素，比如条件分支或者循环，不过，&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;本身仍然作为主体嵌套于其中，由于需要&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎才能执行&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;命令，对于&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;PL/SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;程序，往往存在许多&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;PL/SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'宋体'; "&gt;&amp;nbsp;-&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎之间的交互，过多这样的交互&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'宋体'; "&gt;会&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;对性能产生负面影响。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;/p&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;Oracle&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;在&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;PL/SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;中引入了&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;BULK&amp;nbsp;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;，用于尽量减少&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;PL/SQL&amp;nbsp;&amp;#8211;&amp;nbsp;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎之间的交互，以期提高性能。具体而言，&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;Oracle&amp;nbsp;BULK&amp;nbsp;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;包括&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;FORALL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;语句、&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;BULK&amp;nbsp;COLLECT&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;子句。前者将多条语句（通常是&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;DML&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;）一次性发送给&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎；后者将&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎所获得的结果一次性返回给&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;PL/SQL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt;引擎。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;/p&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;span style="mso-spacerun:'yes'; font-weight:bold; font-size:10.0000pt; font-family:'宋体'; "&gt;（1）FORALL&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;/p&gt;&lt;p style="margin-bottom:0pt; margin-top:0pt; "&gt;&lt;span style="mso-spacerun:'yes'; font-size:10.0000pt; font-family:'Century Gothic'; "&gt
