<?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>2012-03-30T02:47:26Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><generator>feed.cnblogs.com</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/2012/03/30/2424829.html</id><title type="text">ORACLE HANDBOOK系列之九：高级队列（Advanced Queuing）</title><summary type="text">Oracle AQ是Oracle数据库中集成的一种消息队列机制，可以用于不同应用程序间的消息交互，例如PL/SQL可以通过相应的Package访问队列、C#应该程序可以通过ODP.NET访问队列、Java应用程序则可以通过OJMS访问队列。AQ内部是通过数据库表实现的（即消息实际上是存储在数据库表中）。随笔展示了PL/SQL中使用AQ的基本用法，希望对各位有帮助。</summary><published>2012-03-30T02:47:00Z</published><updated>2012-03-30T02:47:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2012/03/30/2424829.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2012/03/30/2424829.html"/><content type="html">&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;Oracle Streams Advanced Queuing (AQ) is a robust and feature-rich message queuing system integrated with Oracle Database. When an organization has different systems that must communicate with each other, a messaging environment can provide a standard, reliable way to transport critical information between these systems. AQ is implemented in database tables.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Oracle AQ是Oracle数据库中集成的一种消息队列机制，可以用于不同应用程序间的消息交互，例如PL/SQL可以通过相应的Package访问队列、C#应该程序可以通过ODP.NET访问队列、Java应用程序则可以通过OJMS访问队列。AQ内部是通过数据库表实现的（即消息实际上是存储在数据库表中）。&lt;/p&gt;&lt;p&gt;随笔展示了PL/SQL中使用AQ的基本用法，希望对各位有帮助。示例假设了一个场景：A是一个被频繁调用的存储过程，每次调用A之前需要调用过程B，B消耗大量的时间，假设A的执行并不依赖于B的执行结果，我们可以把调用B的上下文先存入AQ中，而后异步地进行处理，从而减小了B对应用程序性能的影响。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;创建&lt;/strong&gt;&lt;strong&gt;AQ&lt;/strong&gt;&lt;strong&gt;所需要的权限&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;EXECUTE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; DBMS_AQ &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; user1;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;EXECUTE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; DBMS_AQADM &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; user1;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ENQUEUE_ANY&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;user1&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, FALSE);&lt;br /&gt;  DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;DEQUEUE_ANY&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;user1&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, FALSE);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;需要使用sys或system用户发起这些授权语句，欲创建及管理AQ，需要获得两个至关重要的包dbms_aq, dbms_aqadm的执行权限。后两个通过grant_system_privilege进行的授权是可选的，它们表示的是：&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;ENQUEUE_ANY means users granted this privilege are allowed to enqueue messages to any queues in the database. DEQUEUE_ANY means users granted this privilege are allowed to dequeue messages from any queues in the database.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;创建一个&lt;/strong&gt;&lt;strong&gt;payload&lt;/strong&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #808080;"&gt;OR&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;REPLACE&lt;/span&gt; TYPE t_spl_queue_payload &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; OBJECT&lt;br /&gt;(&lt;br /&gt;  ID             &lt;span style="color: #0000ff;"&gt;CHAR&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;36&lt;/span&gt;),&lt;br /&gt;  EXEC_DATE     &lt;span style="color: #0000ff;"&gt;TIMESTAMP&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;br /&gt;  PARAMETER1       &lt;span style="color: #0000ff;"&gt;NUMBER&lt;/span&gt;,&lt;br /&gt;  PARAMETER2       &lt;span style="color: #0000ff;"&gt;VARCHAR2&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;500&lt;/span&gt;),&lt;br /&gt;  FLAG           &lt;span style="color: #0000ff;"&gt;CHAR&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;)&lt;br /&gt;);&lt;/div&gt;&lt;p&gt;通常我们会定义一个对象，用于存储将来需要放置在AQ队列中的信息。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 16px;"&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;创建&lt;/strong&gt;&lt;strong&gt;AQ&lt;/strong&gt;&lt;strong&gt;相关表&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  DBMS_AQADM.CREATE_QUEUE_TABLE(queue_table        &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1. Spl_queue_table&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;br /&gt;                                multiple_consumers &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; TRUE,&lt;br /&gt;                                queue_payload_type &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.t_spl_queue_payload&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;执行的结果是生成了表Spl_queue_table，以及若干个aq$_ spl_queue_table_表。表Spl_queue_table中除了AQ队列自身需要的一些字段外，有一个类型为t_spl_queue_payload的USER_DATA字段，用于存储队列消息，这也印证了上面说的：AQ内部是通过数据库表实现的。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;创建及启动&lt;/strong&gt;&lt;strong&gt;AQ&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  DBMS_AQADM.CREATE_QUEUE(queue_name  &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.spl_aq&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;br /&gt;                          queue_table &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.spl_queue_table&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  DBMS_AQADM.START_QUEUE(queue_name &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.spl_aq&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;如何停止及删除AQ：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  DBMS_AQADM.STOP_QUEUE (queue_name &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.spl_aq&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;); &lt;br /&gt;  DBMS_AQADM.DROP_QUEUE (queue_name &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.spl_aq&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;); &lt;br /&gt;  DBMS_AQADM.DROP_QUEUE_TABLE (queue_table &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.spl_queue_table&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;消息的入队&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;PROCEDURE&lt;/span&gt; enqueue(p_payload &lt;span style="color: #808080;"&gt;IN&lt;/span&gt; t_spl_queue_payload) &lt;span style="color: #0000ff;"&gt;IS&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;PRAGMA AUTONOMOUS_TRANSACTION;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;  enqueue_options    dbms_aq.enqueue_options_t;&lt;br /&gt;  message_properties dbms_aq.message_properties_t;&lt;br /&gt;  message_handle     &lt;span style="color: #0000ff;"&gt;RAW&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;16&lt;/span&gt;);&lt;br /&gt;  recipients         DBMS_AQ.aq$_recipient_list_t;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  recipients(&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;) :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; sys.aq$_agent(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;someguy&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;user1.SPL_AQ&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;NULL&lt;/span&gt;);&lt;br /&gt;  message_properties.recipient_list :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; recipients;&lt;br /&gt;  message_properties.priority :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;;&lt;br /&gt;  message_properties.delay :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.no_delay;&lt;br /&gt;  message_properties.expiration :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.never;&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;enqueue_options.visibility := dbms_aq.on_commit;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;  enqueue_options.visibility :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.immediate;&lt;br /&gt;  enqueue_options.sequence_deviation :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;  dbms_aq.enqueue(queue_name         &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.SPL_AQ&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;br /&gt;                  enqueue_options    &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; enqueue_options,&lt;br /&gt;                  message_properties &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; message_properties,&lt;br /&gt;                  payload            &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; p_payload,&lt;br /&gt;                  msgid              &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; message_handle);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;COMMIT;&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; enqueue;&lt;/div&gt;&lt;p&gt;(1) recipient，其中&amp;ldquo;someguy&amp;rdquo;指定的是消息的接收者，出队时你需要指定一样的名字才能接收到消息。(2)visibility，可以是on_commit或者immediate，如果使用on_commit，需要手工调用commit语句之后消息才进入队列（这种情况下，最好使用自治事务）；如果使用immediate，则dbms_aq.enqueue完成时消息就进入队列，不需commit，并且默认使用自治事务。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;消息的出队&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;PROCEDURE&lt;/span&gt; dequeue &lt;span style="color: #0000ff;"&gt;IS&lt;/span&gt;&lt;br /&gt;  l_payload      t_spl_queue_payload;&lt;br /&gt;  l_queue_record &lt;span style="color: #0000ff;"&gt;NUMBER&lt;/span&gt;;&lt;br /&gt;  dequeue_options    dbms_aq.dequeue_options_t;&lt;br /&gt;  message_properties dbms_aq.message_properties_t;&lt;br /&gt;  message_handle     &lt;span style="color: #0000ff;"&gt;RAW&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;16&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  dequeue_options.consumer_name :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;someguy&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;;&lt;br /&gt;  dequeue_options.dequeue_mode  :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.remove;&lt;br /&gt;  dequeue_options.navigation    :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.next_message;&lt;br /&gt;  dequeue_options.visibility    :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.immediate;&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;dequeue_options.wait          := dbms_aq.forever;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;  dequeue_options.wait          :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; dbms_aq.no_wait;&lt;br /&gt;  dequeue_options.msgid         :&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #808080;"&gt;*&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt; l_queue_record&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; AQ$SPL_QUEUE_TABLE&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; msg_state &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;READY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt; i &lt;span style="color: #808080;"&gt;IN&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; .. l_queue_record LOOP&lt;br /&gt;    dbms_aq.dequeue(queue_name         &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;user1.SPL_AQ&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;br /&gt;                    dequeue_options    &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; dequeue_options,&lt;br /&gt;                    message_properties &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; message_properties,&lt;br /&gt;                    payload            &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; l_payload,&lt;br /&gt;                    msgid              &lt;span style="color: #808080;"&gt;=&amp;gt;&lt;/span&gt; message_handle);&lt;br /&gt;  &lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;.&lt;br /&gt;  some time consuming calculation&lt;br /&gt;  &amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;.&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;END&lt;/span&gt; LOOP;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;(1) consumer_name需要和前面在入队时指定的recipient一致。(2)wait的两个值forever和no_wait是指如果当前队列中无消息时，是否进行等待，默认等待。(3) navigation的两个值first_message和next_message，一般出于性能考虑我们使用后者，或者在第一次出队时使用前者而在随后的出队中使用后者：&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;The FIRST_MESSAGE navigation option performs a SELECT on the queue. The NEXT_ MESSAGE navigation option fetches from the results of the SELECT run in the FIRST_ MESSAGE navigation. Thus performance is optimized because subsequent dequeues need not run the entire SELECT again.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2424829.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2012/03/30/2424829.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2012/03/22/2411861.html</id><title type="text">ORACLE HANDBOOK系列之八：分区（Partition）</title><summary type="text">随笔简单介绍了分区表及分区索引的基本信息以及基本用法，同时介绍了Oracle 11G中新引入的分区机制Interval Partitioning.</summary><published>2012-03-22T08:34:00Z</published><updated>2012-03-22T08:34:00Z</updated><author><name>Snowtoday</name><uri>http://www.cnblogs.com/KissKnife/</uri></author><link rel="alternate" href="http://www.cnblogs.com/KissKnife/archive/2012/03/22/2411861.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2012/03/22/2411861.html"/><content type="html">&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;P&lt;/span&gt;artitioning enables you to decompose very large tables and indexes into smaller and more manageable pieces called partitions. Each partition is an independent object with its own name and optionally its own storage characteristics.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Oracle允许用户将大表以及大的索引拆分成小块，每一块都是一个单独的对象，称为分区，分区技术可以用于提高查询及DML性能、以及更便捷地管理数据。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;1. &amp;nbsp;&lt;/strong&gt;&lt;strong&gt;分区表&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.1. &amp;nbsp;&lt;/strong&gt;&lt;strong&gt;分区表主要包括三种：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Range Partitioning&lt;/p&gt;&lt;p&gt;List Partitioning&lt;/p&gt;&lt;p&gt;Hash partitioning&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.2.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;分区表创建语法示例（&lt;/strong&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;strong&gt;分区）：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309(val DATE, val2 &lt;span style="color: #0000ff;"&gt;VARCHAR2&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;200&lt;/span&gt;))&lt;br /&gt;PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; RANGE(val)&lt;br /&gt;(&lt;br /&gt;  PARTITION p1 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120308&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;))&lt;br /&gt;);&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.3.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;ORA-14400&lt;/strong&gt;&lt;strong&gt;错误&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果在插入数据时Oracle无法找到合适的分区，就会产生ORA-14400错误，&amp;rdquo;inserted partition key does not map to any partition&amp;rdquo;。例如（假设当前为2012-03-09）：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;INSERT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt; tab_part_0309 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt;(SYSDATE,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;abrownfox&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;);&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.4.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;如何添加分区&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309 &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; PARTITION p2 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120309&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;));&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309 &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; PARTITION p3 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120310&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;));&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.5.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;查询&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; tab_part_0309 PARTITION(p3);&lt;/div&gt;&lt;p&gt;查询时我们可以指定分区。不过更常见的是Oracle自动的Partition Pruning，即如果查询时Where子句中包括用于分区的列（示例中的val列），Oracle会自动定位分区，而不用我们手工指定分区。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.6.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;删除分区&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309 &lt;span style="color: #0000ff;"&gt;DROP&lt;/span&gt; PARTITION p3;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.7.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;MAXVALUE&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一些情况下，我们会通过定时任务（Scheduler）来定期创建分区，这时候我们需要考虑一个问题，如果定时任务失败了导致分区没有建立， 那么后斯的数据插入就会遇到ORA-14400错误。有一种方法可以避免这种错误，使用MAXVALUE：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309_2(val DATE, val2 &lt;span style="color: #0000ff;"&gt;VARCHAR2&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;200&lt;/span&gt;))&lt;br /&gt;PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; RANGE(val)&lt;br /&gt;(&lt;br /&gt;  PARTITION p1 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120308&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)),&lt;br /&gt;  PARTITION pm &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (MAXVALUE)&lt;br /&gt;);&lt;/div&gt;&lt;p&gt;使用MAXVALUE后，无法再添加新的分区：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309_2 &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; PARTITION p2 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120310&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;))&lt;br /&gt;ORA&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;14074&lt;/span&gt;, partition bound must be collate higher than that &lt;span style="color: #0000ff;"&gt;of&lt;/span&gt; the last partition&lt;/div&gt;&lt;p&gt;但是我们可以从pm分区中进行拆分：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309_2&lt;br /&gt;  SPLIT PARTITION pm AT (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120310&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;))&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt; (PARTITION p2, PARTITION pm)&lt;/div&gt;&lt;p&gt;这样的好处是，即便执行拆分的定时任务失败了，数据仍然可以正常插入（只不过进入了pm分区）。同时，发现错误后，我们可以进行补救，手工拆分出一个分区，这样，pm中符合新分区条件的数据，会自动进行新的分区。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.8.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;Interval partitioning&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;11G中引入了一个更为强大的分区机制：Interval partitioning，可以按一定条件自动创建分区。创建语法是这样的：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0309_3(val DATE, val2 &lt;span style="color: #0000ff;"&gt;VARCHAR2&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;200&lt;/span&gt;))&lt;br /&gt;PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; RANGE(val)&lt;br /&gt;INTERVAL (NUMTOYMINTERVAL(&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;MONTH&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;))&lt;br /&gt;(&lt;br /&gt;  PARTITION p1 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120308&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;))&lt;br /&gt;);&lt;/div&gt;&lt;p&gt;Interval分区表必须指定一个根分区（上例的p1），使用Interval指定分区的间隔，它使用了NumToYMInterval函数，该函数第一个参数是number，后一个是单位，包括&amp;rsquo;MONTH&amp;rsquo;, &amp;lsquo;YEAR&amp;rsquo;，上例表示间隔为一个月，目前看一个月应该是最小的间隔了，你可以指定0.5或者0.3，但最终的效果还是一个月。&lt;/p&gt;&lt;p&gt;假设当前时间为2012-03-09，执行下述语句&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;INSERT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt; tab_part_0309_3 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt;(SYSDATE, &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;abrownfox&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;);&lt;/div&gt;&lt;p&gt;1）&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;/p&gt;&lt;p&gt;2）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 分区字段值为2012-04-08，是从根分区往后的一个月时间。&lt;/p&gt;&lt;p&gt;3）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 分区名称自动生成，如SYS_P21&lt;/p&gt;&lt;p&gt;4）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果插入的时间在两个月以后或者更久，则Oracle只生成必须的分区，并不会生成连续分区。例如insert的时间是2012-06-01，则只会生成2012-06-08分区，至于中间的2012-05-08，2012-04-08分区并不生成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;2.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;分区索引&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;跟表一样，索引也分为普通索引与文艺索引（就当分区索引比较文艺一点吧）。可以为一张普通表创建分区索引（不过不能创建Local分区索引，后面解释），也可以为一张分区表创建普通索引。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.1.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;分区索引分两类&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;全局分区索引(global partitioning index)&lt;/p&gt;&lt;p&gt;本地分区索引(local partitioning index)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.2.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;全局分区索引&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;与表的分区没有关系，创建索引时可以指定任意的列作为索引分区的Key，创建语法如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; tab_part_0321_2(val DATE, val2 &lt;span style="color: #0000ff;"&gt;NUMBER&lt;/span&gt;)&lt;br /&gt;PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; RANGE(val)&lt;br /&gt;(&lt;br /&gt;  PARTITION p1 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (TO_DATE(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120308&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;))&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INDEX&lt;/span&gt; tab_part_0321_2_idx &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; tab_part_0321_2 (val2)&lt;br /&gt;   GLOBAL PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; RANGE (val2)&lt;br /&gt;      (PARTITION p1 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;br /&gt;       PARTITION p2 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;),&lt;br /&gt;       PARTITION p3 &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (MAXVALUE));&lt;/div&gt;&lt;p&gt;注意这里使用了global关键字， 并且索引分区使用的Key是val2字段，而不是表分区使用的val字段。&lt;/p&gt;&lt;p&gt;那么是否可以在为字段val2创建索引但是使用val字段作为分区的key呢？&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INDEX&lt;/span&gt; tab_part_0321_2_idx2 &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; tab_part_0321_2 (val2)&lt;br /&gt;   GLOBAL PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; RANGE (val)&lt;br /&gt;      (PARTITION pa &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (to_date(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120308&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)),&lt;br /&gt;       PARTITION pb &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (to_date(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;20120408&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;yyyymmdd&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)),&lt;br /&gt;       PARTITION pc &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; LESS THAN (MAXVALUE));&lt;br /&gt;ORA&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;14038&lt;/span&gt; global partitioned &lt;span style="color: #0000ff;"&gt;index&lt;/span&gt; must be prefixed.&lt;/div&gt;&lt;p&gt;Prefixed即&amp;ldquo;前缀索引&amp;rdquo;，指索引键与分区键是相同的，Oracle无法创建非前缀的全局分区索引。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.3.&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;本地分区索引&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;只有分区表才能创建本地分区索引，本地分区索引始终使用与分区表相同的字段进行分区（不需要partition by子句），因此索引的分区与表的分区是一一对应的。我们看看语法：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INDEX&lt;/span&gt; tab_part_0321_2_idx3 &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; tab_part_0321_2 (val) LOCAL&lt;/div&gt;&lt;p&gt;尝试：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INDEX&lt;/span&gt; tab_part_0321_2_idx4 &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; tab_part_0321_2 (val2) LOCAL&lt;br /&gt;ORA&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01408&lt;/span&gt; such &lt;span style="color: #0000ff;"&gt;column&lt;/span&gt; list already indexed&lt;/div&gt;&lt;p&gt;这是因为在前一小节我们在这个列上创建过索引了，我们回去把tab_part_0321_2_idx移除，重新执行上面的语句便可创建成功，这说明跟global分区索引不同，local分区索引允许创建&amp;ldquo;非前缀索引&amp;rdquo;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;注：关于前面提到的本地前缀索引(local prefixed index)与本地非前缀索引(local non-prefixed index)的概念，有兴趣的可以看看OTN的一些讨论帖子，比如：&lt;a href="https://forums.oracle.com/forums/thread.jspa?threadID=2150455&amp;amp;start=0&amp;amp;tstart=0"&gt;https://forums.oracle.com/forums/thread.jspa?threadID=2150455&amp;amp;start=0&amp;amp;tstart=0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/2411861.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2012/03/22/2411861.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><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;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #3366ff; font-family: SimSun"&gt;字符集：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: SimSun"&gt;人们根据需要把某些字符收集到一处，并赋以名称，于是便有了某某字符集。&lt;/span&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;span style="font-family: SimSun"&gt;在字符集与编码世界的漫漫历史长河里（伪），出现过若干个让计算机工作者们如雷贯耳的名字，这些名字，有些已经成了浮云飘散了，有些还在我们的代码中折腾。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AL32UTF8&lt;/span&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;WE8MSWIN1252&lt;/span&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;US7ASCII&lt;/span&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('caf35650-ea75-4b5d-947d-581fc29843a4')"&gt;&lt;img class="code_img_closed" id="code_img_closed_caf35650-ea75-4b5d-947d-581fc29843a4" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" 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;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_caf35650-ea75-4b5d-947d-581fc29843a4"&gt;&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('07d3d81f-0af2-43c9-b5c6-0ee12e06ab25')"&gt;&lt;img class="code_img_closed" id="code_img_closed_07d3d81f-0af2-43c9-b5c6-0ee12e06ab25" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" 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;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_07d3d81f-0af2-43c9-b5c6-0ee12e06ab25"&gt;&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('2a3c9a4e-e4be-4791-b4a7-6986d9ddecde')"&gt;&lt;img class="code_img_closed" id="code_img_closed_2a3c9a4e-e4be-4791-b4a7-6986d9ddecde" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" 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;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_2a3c9a4e-e4be-4791-b4a7-6986d9ddecde"&gt;&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;span style="font-family: 'Century Gothic','sans-serif'"&gt;AddVMOption&amp;nbsp;-Doracle.jdbc.convertNcharLiterals=true&lt;/span&gt;&lt;/p&gt;&lt;p&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;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('a573b765-563a-4fc9-beb5-b12d80e0fa62')"&gt;&lt;img class="code_img_closed" id="code_img_closed_a573b765-563a-4fc9-beb5-b12d80e0fa62" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" 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;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_a573b765-563a-4fc9-beb5-b12d80e0fa62"&gt;&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('784f8232-215b-4111-b0ae-188aea26baef')"&gt;&lt;img class="code_img_closed" id="code_img_closed_784f8232-215b-4111-b0ae-188aea26baef" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" 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;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_784f8232-215b-4111-b0ae-188aea26baef"&gt;&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca')"&gt;&lt;img class="code_img_closed" id="code_img_closed_77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" 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;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_77c4bfa9-da4e-4afe-9c45-a3f3f7dde6ca"&gt;&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;4. &lt;a href="http://en.wikipedia.org/wiki/ASCII"&gt;http://en.wikipedia.org/wiki/ASCII&lt;/a&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;11. &lt;a href="http://en.wikipedia.org/wiki/Unicode"&gt;http://en.wikipedia.org/wiki/Unicode&lt;/a&gt;&lt;/p&gt;&lt;p&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;&lt;p&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;&lt;p&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;&lt;p&gt;&amp;nbsp;&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&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&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&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&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&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&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&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&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&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&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;首先我们准备演示用的几张表，并插入少量的测试数据：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: black; "&gt;&lt;font class="Apple-style-span" 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:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: black; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: black; "&gt;&lt;font class="Apple-style-span" 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:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;然后通过：&lt;/span&gt;&lt;/p&gt;  &lt;p&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;然后：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&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&gt;&lt;font class="Apple-style-span" face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;font class="Apple-style-span" face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;font class="Apple-style-span" face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;font class="Apple-style-span" face="'Courier New'"&gt;&lt;strong&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&amp;nbsp;&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;如果是这样呢：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" 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;&amp;nbsp;&lt;/p&gt;  &lt;p&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&gt;&amp;nbsp;&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&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" color="#0000FF" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&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&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&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&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&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;span class="Apple-style-span" style="font-family: SimSun; "&gt;作为输出参数的情况很简单，这里就不重复了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&gt;&lt;font class="Apple-style-span" face="'Courier New'" size="2"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&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&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&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&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&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&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&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&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&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&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&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&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&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&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&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&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;span style="font-family:SimSun;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;或者可以简单地写成：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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:10px;"&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&gt;&lt;span class="Apple-style-span" style="font-family: SimSun; "&gt;同样，也可以简单地写成：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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&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&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&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&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&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&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:10px;"&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&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&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&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&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&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&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&gt;&amp;nbsp;&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&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&gt;&lt;/p&gt;&lt;p&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&gt;&lt;/p&gt;&lt;p&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&gt;&lt;/p&gt;&lt;p&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;FOR&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&gt;&lt;font class="Apple-style-span" face="'Century Gothic'" size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic'" size="2"&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: #0000FF;"&gt;table&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;select&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;employees;&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: #0000FF;"&gt;desc&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk;&lt;br /&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nullable&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;Default&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Comments&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;------------&amp;nbsp;------------&amp;nbsp;--------&amp;nbsp;-------&amp;nbsp;--------&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;EMPLOYEE_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Y&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;&lt;br /&gt;FIRST_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;)&amp;nbsp;Y&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;&lt;br /&gt;LAST_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;)&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;&lt;br /&gt;EMAIL&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;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;)&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;&lt;br /&gt;PHONE_NUMBER&amp;nbsp;&amp;nbsp;&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;)&amp;nbsp;Y&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;&lt;br /&gt;HIRE_DATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DATE&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;&lt;br /&gt;JOB_ID&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;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;&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;&lt;br /&gt;SALARY&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;8&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;Y&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;&lt;br /&gt;COMMISSION_PCT&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;2&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;Y&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;&lt;br /&gt;MANAGER_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Y&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;&lt;br /&gt;DEPARTMENT_ID&amp;nbsp;&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;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&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;TYPE&amp;nbsp;NumList&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;20&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;depts&amp;nbsp;NumList&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NumList(&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: #800000; font-weight: bold;"&gt;30&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;70&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&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;&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;depts.FIRST..depts.LAST&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DELETE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk&lt;br /&gt;&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;department_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;depts(i);&lt;br /&gt;&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;&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;&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;TYPE&amp;nbsp;NumList&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;20&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;depts&amp;nbsp;NumList&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;NumList(&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: #800000; font-weight: bold;"&gt;30&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;70&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;department&amp;nbsp;numbers&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;&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;depts.FIRST..depts.LAST&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DELETE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk&lt;br /&gt;&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;department_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;depts(i);&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;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;虽然从内部执行机制上来说，两个循环有很大的区别，但从语法上来说，还是非常类似的。不过有一个小细节需要注意，就是FORALL语句并没有对应的END语句。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;&lt;br /&gt;我们再来看看使用FORALL的情况下对异常的处理：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&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;t_bulk2(f1&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;3&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;TYPE&amp;nbsp;type1&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v&amp;nbsp;type1:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;type1(&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: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3000&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;77777&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&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: #800000; font-weight: bold;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10001&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;EXECUTE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IMMEDIATE&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;TRUNCATE&amp;nbsp;TABLE&amp;nbsp;t_bulk2&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;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&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;v.FIRST..v.LAST&lt;br /&gt;&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_bulk2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(v(idx));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&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;&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;DBMS_OUTPUT.PUT_LINE(SQLERRM);&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;ORA&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01438&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&amp;nbsp;值大于为此列指定的允许精度&lt;br /&gt;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;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;successfully&amp;nbsp;completed&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: #0000FF;"&gt;SELECT&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;F1&lt;br /&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: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;Oracle&amp;nbsp;9i中引入了SAVE&amp;nbsp;&amp;nbsp;EXCEPTIONS语法及与之对应的&amp;#8220;ORA-24381：&amp;nbsp;error(s)&amp;nbsp;in&amp;nbsp;array&amp;nbsp;DML&amp;#8221;异常，使用它们，我们可以跳过FORALL中出现异常的语句，并将异常保存在&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'Century Gothic'; "&gt;SQL%BULK_EXCEPTIONS&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;P这个集合中：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TYPE&amp;nbsp;type1&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v&amp;nbsp;type1:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;type1(&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: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3000&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;77777&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&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: #800000; font-weight: bold;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10001&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;BULK_ERROR&amp;nbsp;EXCEPTION;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PRAGMA&amp;nbsp;EXCEPTION_INIT(BULK_ERROR,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;24381&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;EXECUTE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;IMMEDIATE&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;TRUNCATE&amp;nbsp;TABLE&amp;nbsp;t_bulk2&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;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&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;v.FIRST..v.LAST&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SAVE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;EXCEPTIONS&lt;br /&gt;&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_bulk2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(v(idx));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;BULK_ERROR&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;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;..SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_EXCEPTIONS.&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;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(SQLERRM(&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_EXCEPTIONS(i).ERROR_CODE)&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;,&amp;nbsp;Statement:&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_EXCEPTIONS(i).ERROR_INDEX);&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;&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;br /&gt;ORA&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01438&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&amp;nbsp;值大于为此列指定的允许精度,&amp;nbsp;Statement:&amp;nbsp;#&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;ORA&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01438&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&amp;nbsp;值大于为此列指定的允许精度,&amp;nbsp;Statement:&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;7&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;ORA&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01438&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&amp;nbsp;值大于为此列指定的允许精度,&amp;nbsp;Statement:&amp;nbsp;#&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;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;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;successfully&amp;nbsp;completed&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: #0000FF;"&gt;SELECT&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;F1&lt;br /&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: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&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;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;8&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;9&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;（注意使用ERROR_CODE时要加上负号。）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;下面介绍如何获取第一条语句所影响的行数，这需要使用SQL%BULK_ROWCOUNT:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&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;t_bulk3(fid&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: #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_bulk3&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;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_bulk3&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;&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_bulk3&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;&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_bulk3&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;);&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_bulk3&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;);&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_bulk3&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;);&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_bulk3&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;);&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;TYPE&amp;nbsp;type1&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v&amp;nbsp;type1:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;type1(&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: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;BULK_ERROR&amp;nbsp;EXCEPTION;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PRAGMA&amp;nbsp;EXCEPTION_INIT(BULK_ERROR,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;24381&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;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;v.FIRST..v.LAST&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SAVE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;EXCEPTIONS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DELETE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk3&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;fid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;v(idx);&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&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;v.FIRST..v.LAST&amp;nbsp;LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Statement:&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;idx&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;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_ROWCOUNT(idx)&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;&amp;nbsp;rows&amp;nbsp;were&amp;nbsp;impacted.&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;&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;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;BULK_ERROR&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;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;..SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_EXCEPTIONS.&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;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(SQLERRM(&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_EXCEPTIONS(i).ERROR_CODE)&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;,&amp;nbsp;Statement:&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;BULK_EXCEPTIONS(i).ERROR_INDEX);&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;&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;br /&gt;Statement:&amp;nbsp;#&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: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;rows&amp;nbsp;were&amp;nbsp;impacted.&lt;br /&gt;Statement:&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: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;rows&amp;nbsp;were&amp;nbsp;impacted.&lt;br /&gt;Statement:&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;rows&amp;nbsp;were&amp;nbsp;impacted.&lt;br /&gt;Statement:&amp;nbsp;#&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&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;rows&amp;nbsp;were&amp;nbsp;impacted.&lt;br /&gt;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;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;successfully&amp;nbsp;completed&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; font-weight:bold; font-size:10.0000pt; font-family:'宋体'; "&gt;&lt;br /&gt;（2）BULK&amp;nbsp;COLLECT&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;假设有一条SQL查询，返回的记录中包含5行，那么如果在PL/SQL中执行此查询，会有5次的PL/SQL&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'Century Gothic'; "&gt;&amp;#8211;&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;&amp;nbsp;SQL交互，如果使用BULK&amp;nbsp;COLLECT，可以降低到1次。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;BULK&amp;nbsp;COLLECT子句可以出现在以下语句中：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;SELECT&amp;nbsp;INTO&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;FETCH&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;RETURNING&amp;nbsp;INTO&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&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;t_bulk4(fid&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;number&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;fval&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;/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_bulk4&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: #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;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_bulk4&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: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;def&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;t_bulk4&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;,&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;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_bulk4&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;4&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;xxx&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;t_bulk4&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;5&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;123&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;/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;TYPE&amp;nbsp;type1&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_bulk4&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;ROWTYPE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v&amp;nbsp;type1;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&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;&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;v&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk4;&lt;br /&gt;&amp;nbsp;&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;&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;..v.&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(v(i).fid&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;v(i).fval);&lt;br /&gt;&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;&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: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;abc&lt;br /&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;def&lt;br /&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;xyz&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;xxx&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;123&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;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;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;successfully&amp;nbsp;completed&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;另一个INDEX&amp;nbsp;BY集合的示例（实际上使用跟上例一样的FOR循环也可以）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TYPE&amp;nbsp;type1&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_bulk4&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;ROWTYPE&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;&amp;nbsp;v&amp;nbsp;type1;&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&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;&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;v&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_bulk4;&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;idx:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;v.FIRST;&lt;br /&gt;&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;DBMS_OUTPUT.PUT_LINE(v(idx).fid&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;v(idx).fval);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idx&amp;nbsp;:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;v.&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;&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;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;FETCH&amp;nbsp;cursor&amp;nbsp;BULK&amp;nbsp;COLLECT&amp;nbsp;&amp;nbsp;INTO的使用与上述例子都类似，不多写了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;关于RETURNING&amp;nbsp;INTO&amp;nbsp;+&amp;nbsp;BULK&amp;nbsp;COLLECT，我们来一个综合的例子：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&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;t_bulk5(fid&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: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TYPE&amp;nbsp;type1&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v&amp;nbsp;type1:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;type1(&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: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;TYPE&amp;nbsp;type2&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_bulk5.fid&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;TYPE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v2&amp;nbsp;type2;&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;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;v.FIRST..v.LAST&lt;br /&gt;&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_bulk5&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(v(idx))&amp;nbsp;RETURNING&amp;nbsp;fid&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;v2;&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(v2.&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;COUNT&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: #800000; font-weight: bold;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;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;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;successfully&amp;nbsp;completed&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;顺便比较一下使用FOR循环时是什么结果：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#333333" face="'Century Gothic'"&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TYPE&amp;nbsp;type1&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;NUMBER&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v&amp;nbsp;type1:&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;type1(&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: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;TYPE&amp;nbsp;type2&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_bulk5.fid&lt;/span&gt;&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;TYPE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;v2&amp;nbsp;type2;&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;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt;&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;v.FIRST..v.LAST&amp;nbsp;LOOP&lt;br /&gt;&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_bulk5&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VALUES&lt;/span&gt;&lt;span style="color: #000000;"&gt;(v(idx))&amp;nbsp;RETURNING&amp;nbsp;fid&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;v2;&lt;br /&gt;&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;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;DBMS_OUTPUT.PUT_LINE(v2.&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;COUNT&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: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;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;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;successfully&amp;nbsp;completed&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;这实际上也好理解，因为上面的INSERT语句每次影响的只有一行，所以第二例中，保留的是循环中最后一次执行的INSERT所影响的行数，当然是1；而&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'Century Gothic'; "&gt;由于&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;FORALL&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'Century Gothic'; "&gt;语句会将所有语句一次性提交到数据库，&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;这也使得我们可以使用RETURNING&amp;nbsp;INTO&amp;nbsp;+&amp;nbsp;BULK&amp;nbsp;COLLECT&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'Century Gothic'; "&gt;获取所有&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;插入&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'Century Gothic'; "&gt;的数据&lt;/span&gt;&lt;span style="mso-spacerun:'yes'; color:#333333; font-size:9.0000pt; font-family:'宋体'; "&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/1996277.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/03/26/1996277.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/KissKnife/archive/2011/02/25/1964816.html</id><title type="text">Oracle Handbook系列之一：结构化查询(Hierarchical Queries)</title><summary type="text">一）CONNECT BY； 二）START WITH； 三）SYS_CONNECT_BY_PATH()； 四）CONNECT_BY_ISLEAF； 五）CONNECT BY与WHERE子句； 六）CONNECT BY LEVEL</summary><published>2011-02-25T06:07:00Z</published><updated>2011-02-25T06:07: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/02/25/1964816.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/KissKnife/archive/2011/02/25/1964816.html"/><content type="html">&lt;div&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;一）准备测试数据&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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_hierarchical:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;|-Emp &lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;职工编号&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;|-Mgr &amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;Mgr&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;本身也是职工）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;|-Emp_name&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;职工姓名&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;AA&lt;/span&gt;&lt;span style="font-family:宋体;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;Manager&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;emp_name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BB&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CC&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DD&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EE&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t&lt;br /&gt;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PRIOR&amp;nbsp;emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;mgr&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;order&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;emp;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;background:yellow;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;background:yellow;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;用于指定&lt;/span&gt; &lt;span style="font-family:宋体;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:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;子&lt;/span&gt; &lt;span style="font-family:宋体;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;PRIOR&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 2&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 1&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 1&lt;/span&gt;&lt;span style="font-family:宋体;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;LEVEL=2&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 2&lt;/span&gt;&lt;span style="font-family:宋体;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;LEVEL=1&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，这就是为什么上述查询结果中出现共色标识部分那两行记录，其它的类推。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;START WITH&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;START WITH&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;子句，用于指定根节点：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t&lt;br /&gt;START&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp&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;&lt;br /&gt;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PRIOR&amp;nbsp;emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;mgr;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:red;"&gt;2&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#00B0F0;"&gt;3&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&lt;span style="color:red"&gt;2&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&lt;span style="color:#00B0F0"&gt;3&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&lt;span style="color:#00B0F0"&gt;3&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&lt;span style="color:red"&gt;2&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;emp 1&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 1&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 3&lt;/span&gt;&lt;span style="font-family:宋体;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;emp 1&amp;#8212;emp 2&amp;#8212;emp 3&lt;/span&gt;&lt;span style="font-family:宋体;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; PRIOR &lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;关键字的说明，个人观点：&amp;#8220;&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;PRIOR emp=mgr&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;&amp;#8221;表示前一条记录的&lt;/span&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;emp&lt;/span&gt;&lt;span style="font-family:宋体;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:宋体;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;mgr&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;编号，从查询结果中可以看出这一点。同时，从查询结果中还能发现明显的&lt;/span&gt; &lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;递归&lt;/span&gt; &lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;痕迹，参见不同颜色标识的数字。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;SYS_CONNECT_BY_PATH()&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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_CONNECT_BY_PATH()&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;函数，我们可以得到层次结构或者说树状结构的&lt;/span&gt; &lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;路径，&lt;/span&gt; &lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;参见如下：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;SYS_CONNECT_BY_PATH(emp,&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;)&amp;nbsp;path&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t&lt;br /&gt;START&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp&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;&lt;br /&gt;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PRIOR&amp;nbsp;emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;mgr;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/3/4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/3/6&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/5&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;CONNECT_BY_ISLEAF&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;CONNECT_BY_ISLEAF&lt;/span&gt;&lt;span style="font-family:宋体;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;LEAF&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;（叶子），即没有任何节点隶属于该节点：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;SYS_CONNECT_BY_PATH(emp,&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;)&amp;nbsp;path&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CONNECT_BY_ISLEAF&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;&lt;br /&gt;START&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp&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;&lt;br /&gt;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PRIOR&amp;nbsp;emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;mgr;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/3/4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/3/6&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /1/2/5&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;WHERE&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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&gt;&lt;span style="font-family:宋体;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&lt;/span&gt;&lt;span style="font-family:宋体;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:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;文档，先后是：&lt;/span&gt;&lt;/p&gt;  &lt;p&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:宋体;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;JOIN&lt;/span&gt;&lt;span style="font-family:宋体;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;JOIN ON&lt;/span&gt;&lt;span style="font-family:宋体;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:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;中做的关联&lt;/span&gt;&lt;/p&gt;  &lt;p&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:宋体;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;CONNECT BY&lt;/span&gt;&lt;/p&gt;  &lt;p&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:宋体;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:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;条件&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;看一个例子，假设上面的各位职工，需要保存一些注释信息，同时这些信息根据中文、英文分成两个不同版本，我们可以简单设计一下这个注释表：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;|-Emp&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;职工编号&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;|-Lang&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;语言（中文或英文）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;|-Emp_desc&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;职工的具体描述&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;lang,&amp;nbsp;emp_desc&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_desc;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这是注释&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&amp;nbsp;&amp;nbsp; this is comment&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这是注释&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&amp;nbsp;&amp;nbsp; this is comment&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这是注释&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&amp;nbsp;&amp;nbsp; this is comment&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这是注释&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&amp;nbsp;&amp;nbsp; this is comment&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这是注释&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&amp;nbsp;&amp;nbsp; this is comment&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;这是注释&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&amp;nbsp;&amp;nbsp; this is comment&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;现在需要在原有的职工结构化查询中包括每个职工的中文注释信息，我们看看下面的查询：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t.emp,&amp;nbsp;t.mgr,&amp;nbsp;td.emp_desc,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t,&amp;nbsp;t_desc&amp;nbsp;td&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t.emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;td.emp&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;and&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;td.lang&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;chinese&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;START&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t.emp&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;&lt;br /&gt;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PRIOR&amp;nbsp;t.emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;t.mgr;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;再看这个查询，看起来与前者是一样的：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t.emp,&amp;nbsp;t.mgr,&amp;nbsp;td.emp_desc,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_hierarchical&amp;nbsp;t&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;join&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t_desc&amp;nbsp;td&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;on&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(t.emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;td.emp&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;and&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;td.lang&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;chinese&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;START&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t.emp&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;&lt;br /&gt;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PRIOR&amp;nbsp;t.emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;t.mgr;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&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="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;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;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;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;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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; td.lang=&amp;#8217;chinese&amp;#8217;&lt;/span&gt;&lt;span style="font-family:宋体;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;JOIN&lt;/span&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;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;JOIN ON&lt;/span&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;之前执行。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;JOIN&lt;/span&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;遇到这样的重复数据的时候是怎么处理的。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;lang&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t2;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;之后：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp,&amp;nbsp;mgr,&amp;nbsp;lang&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t2&lt;br /&gt;start&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;emp&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;&lt;br /&gt;connect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;by&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;prior&amp;nbsp;emp&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;mgr;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; english&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;lang=&amp;#8217;chinese&amp;#8217;&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;过滤之后：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chinese&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;出现重复行，显然不是我们期望的结果。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family:宋体;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;CONNECT BY LEVEL&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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; CONNECT BY LEVEL&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;，这是一个理解起来令人头痛，但同时在某些情境下又是非常有用的：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;font class="Apple-style-span" face="'Century Gothic', sans-serif"&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;dual&amp;nbsp;CONNECT&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;LEVEL&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&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;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;3&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;4&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;5&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:&amp;quot;Century Gothic&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;6&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;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:宋体;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;CONNECT BY&lt;/span&gt;&lt;span style="font-family:宋体;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;PRIOR&lt;/span&gt;&lt;span style="font-family:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;关键字。&lt;/span&gt; &lt;span style="font-family:宋体;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;CONNECT BY LEVEL&lt;/span&gt;&lt;span style="font-family:宋体;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;BUG&lt;/span&gt;&lt;span style="font-family:宋体;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:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;可能在后续的版本中加以纠正。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;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;CONNECT BY LEVEL&lt;/span&gt;&lt;span style="font-family:宋体;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 10g/11g&lt;/span&gt;&lt;span style="font-family:宋体;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;CONNECT BY 1=1&lt;/span&gt;&lt;span style="font-family:宋体;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:宋体;Century Gothic&amp;quot;;Century Gothic&amp;quot;;"&gt;到无穷大的数。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/KissKnife/aggbug/1964816.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/KissKnife/archive/2011/02/25/1964816.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
