<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_MYTHZZ</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/16730/rss</id><updated>2011-03-09T01:35:32Z</updated><author><name>mythzz</name><uri>http://www.cnblogs.com/mythzz/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mythzz/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/16730/rss"/><entry><id>http://www.cnblogs.com/mythzz/archive/2011/03/09/1977868.html</id><title type="text">调用oralce的procedure时如何传入table类型数据[网上资料]</title><summary type="text">前端时间有个项目，需要调用oracle存储过程，他的传入参数中有自定义的table类型的数据。解决方法如下：1、需要安装oracle对应的ODPPL/SQL Package : My PackCREATE PACKAGE MYPACK ASTYPE AssocArrayVarchar2_t is table of VARCHAR(20) index by BINARY_INTEGER;PROCEDURE TestVarchar2( Param1 IN AssocArrayVarchar2_t, Param2 IN OUT AssocArrayVarchar2_t, Param3 OUT As.</summary><published>2011-03-09T01:30:00Z</published><updated>2011-03-09T01:30:00Z</updated><author><name>mythzz</name><uri>http://www.cnblogs.com/mythzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mythzz/archive/2011/03/09/1977868.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mythzz/archive/2011/03/09/1977868.html"/><content type="html">&lt;p&gt;前端时间有个项目，需要调用oracle存储过程，&lt;span  style="font-family: simsun; line-height: 23px; "&gt;他的传入参数中有自定义的table类型的数据。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;解决方法如下：&lt;/p&gt;&lt;p&gt;1、需要安装oracle对应的&lt;span  style="font-family: simsun; line-height: 23px; "&gt;ODP&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="font-family: simsun; line-height: 23px; "&gt;PL/SQL &amp;nbsp; Package &amp;nbsp; : &amp;nbsp; My &amp;nbsp; Pack&amp;nbsp;&lt;br /&gt;&lt;br /&gt;CREATE &amp;nbsp; PACKAGE &amp;nbsp; MYPACK &amp;nbsp; AS&amp;nbsp;&lt;br /&gt;TYPE &amp;nbsp; AssocArrayVarchar2_t &amp;nbsp; is &amp;nbsp; table &amp;nbsp; of &amp;nbsp; VARCHAR(20) &amp;nbsp; index &amp;nbsp; by &amp;nbsp; BINARY_INTEGER;&amp;nbsp;&lt;br /&gt;PROCEDURE &amp;nbsp; TestVarchar2(&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1 &amp;nbsp; IN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AssocArrayVarchar2_t,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2 &amp;nbsp; IN &amp;nbsp; OUT &amp;nbsp; AssocArrayVarchar2_t,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3 &amp;nbsp; OUT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AssocArrayVarchar2_t);&amp;nbsp;&lt;br /&gt;END &amp;nbsp; MYPACK; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;PL/SQL &amp;nbsp; Package &amp;nbsp; Body &amp;nbsp; : &amp;nbsp; My &amp;nbsp; Pack&amp;nbsp;&lt;br /&gt;&lt;br /&gt;CREATE &amp;nbsp; PACKAGE &amp;nbsp; BODY &amp;nbsp; MYPACK &amp;nbsp; AS&amp;nbsp;&lt;br /&gt;PROCEDURE &amp;nbsp; TestVarchar2(&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1 &amp;nbsp; IN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AssocArrayVarchar2_t,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2 &amp;nbsp; IN &amp;nbsp; OUT &amp;nbsp; AssocArrayVarchar2_t,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3 &amp;nbsp; OUT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AssocArrayVarchar2_t)&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IS&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i &amp;nbsp; integer;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- &amp;nbsp; copy &amp;nbsp; a &amp;nbsp; few &amp;nbsp; elements &amp;nbsp; from &amp;nbsp; y &amp;nbsp; to &amp;nbsp; z&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3(1) &amp;nbsp; := &amp;nbsp; Param2(1);&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3(2) &amp;nbsp; := &amp;nbsp; NULL;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3(3) &amp;nbsp; := &amp;nbsp; Param2(3);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;-- &amp;nbsp; copy &amp;nbsp; all &amp;nbsp; elements &amp;nbsp; from &amp;nbsp; x &amp;nbsp; to &amp;nbsp; y&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2(1) &amp;nbsp; := &amp;nbsp; Param1(1);&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2(2) &amp;nbsp; := &amp;nbsp; Param1(2);&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2(3) &amp;nbsp; := &amp;nbsp; Param1(3);&amp;nbsp;&lt;br /&gt;&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; FOR &amp;nbsp; i &amp;nbsp; IN &amp;nbsp; 1..3 &amp;nbsp; LOOP&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; insert &amp;nbsp; into &amp;nbsp; T1 &amp;nbsp; values(i, &amp;nbsp; Param2(i));&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END &amp;nbsp; LOOP;&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;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR &amp;nbsp; i &amp;nbsp; IN &amp;nbsp; 1..3 &amp;nbsp; LOOP&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select &amp;nbsp; COL2 &amp;nbsp; into &amp;nbsp; Param2(i) &amp;nbsp; from &amp;nbsp; T2 &amp;nbsp; where &amp;nbsp; COL1 &amp;nbsp; = &amp;nbsp; i;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END &amp;nbsp; LOOP;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END &amp;nbsp; TestVarchar2;&amp;nbsp;&lt;br /&gt;END &amp;nbsp; MYPACK;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;ODP.NET &amp;nbsp; Example&amp;nbsp;&lt;br /&gt;&lt;br /&gt;public &amp;nbsp; void &amp;nbsp; BindAssocArray(){&amp;nbsp;&lt;br /&gt;... &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleCommand &amp;nbsp; cmd &amp;nbsp; = &amp;nbsp; new &amp;nbsp; OracleCommand(&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "begin &amp;nbsp; MyPack.TestVarchar2(:1, &amp;nbsp; :2, &amp;nbsp; :3); &amp;nbsp; end; ", &amp;nbsp; con);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleParameter &amp;nbsp; Param1 &amp;nbsp; = &amp;nbsp; cmd.Parameters.Add(...);&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleParameter &amp;nbsp; Param2 &amp;nbsp; = &amp;nbsp; cmd.Parameters.Add(...);&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleParameter &amp;nbsp; Param3 &amp;nbsp; = &amp;nbsp; cmd.Parameters.Add(...);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1.Direction &amp;nbsp; = &amp;nbsp; ParameterDirection.Input;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2.Direction &amp;nbsp; = &amp;nbsp; ParameterDirection.InputOutput;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3.Direction &amp;nbsp; = &amp;nbsp; ParameterDirection.Output;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Specify &amp;nbsp; that &amp;nbsp; we &amp;nbsp; are &amp;nbsp; binding &amp;nbsp; PL/SQL &amp;nbsp; Associative &amp;nbsp; Array&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1.CollectionType &amp;nbsp; = &amp;nbsp; OracleCollectionType.PLSQLAssociativeArray;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2.CollectionType &amp;nbsp; = &amp;nbsp; OracleCollectionType.PLSQLAssociativeArray;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3.CollectionType &amp;nbsp; = &amp;nbsp; OracleCollectionType.PLSQLAssociativeArray;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Setup &amp;nbsp; the &amp;nbsp; values &amp;nbsp; for &amp;nbsp; PL/SQL &amp;nbsp; Associative &amp;nbsp; Array&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1.Value &amp;nbsp; = &amp;nbsp; new &amp;nbsp; string[3]{ "First &amp;nbsp; Element ",&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Second &amp;nbsp; Element &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Third &amp;nbsp; Element &amp;nbsp; ",&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2.Value &amp;nbsp; = &amp;nbsp; new &amp;nbsp; string[3]{ "First &amp;nbsp; Element ",&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Second &amp;nbsp; Element &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Third &amp;nbsp; Element &amp;nbsp; ",&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3.Value &amp;nbsp; = &amp;nbsp; null;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Specify &amp;nbsp; the &amp;nbsp; maximum &amp;nbsp; number &amp;nbsp; of &amp;nbsp; elements &amp;nbsp; in &amp;nbsp; the &amp;nbsp; PL/SQL &amp;nbsp; Associative &amp;nbsp; Array&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1.Size &amp;nbsp; = &amp;nbsp; 3;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2.Size &amp;nbsp; = &amp;nbsp; 3;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3.Size &amp;nbsp; = &amp;nbsp; 3;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Setup &amp;nbsp; the &amp;nbsp; ArrayBindSize &amp;nbsp; for &amp;nbsp; Param1&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1.ArrayBindSize &amp;nbsp; = &amp;nbsp; new &amp;nbsp; int[3]{13, &amp;nbsp; 14, &amp;nbsp; 13}; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Setup &amp;nbsp; the &amp;nbsp; ArrayBindStatus &amp;nbsp; for &amp;nbsp; Param1 &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param1.ArrayBindStatus &amp;nbsp; = &amp;nbsp; new &amp;nbsp; OracleParameterStatus[3]{&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleParameterStatus.Success,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleParameterStatus.Success,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OracleParameterStatus.Success};&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Setup &amp;nbsp; the &amp;nbsp; ArrayBindSize &amp;nbsp; for &amp;nbsp; Param2&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param2.ArrayBindSize &amp;nbsp; = &amp;nbsp; new &amp;nbsp; int[3]{20, &amp;nbsp; 20, &amp;nbsp; 20};&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; Setup &amp;nbsp; the &amp;nbsp; ArrayBindSize &amp;nbsp; for &amp;nbsp; Param3&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Param3.ArrayBindSize &amp;nbsp; = &amp;nbsp; new &amp;nbsp; int[3]{20, &amp;nbsp; 20, &amp;nbsp; 20};&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &amp;nbsp; execute &amp;nbsp; the &amp;nbsp; cmd&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cmd.ExecuteNonQuery(); &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //print &amp;nbsp; out &amp;nbsp; the &amp;nbsp; parameter 's &amp;nbsp; values&amp;nbsp;&lt;br /&gt;... &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Array &amp;nbsp; Binding&amp;nbsp;&lt;br /&gt;The &amp;nbsp; array &amp;nbsp; bind &amp;nbsp; feature &amp;nbsp; enables &amp;nbsp; applications &amp;nbsp; to &amp;nbsp; bind &amp;nbsp; arrays &amp;nbsp; of &amp;nbsp; a &amp;nbsp; type &amp;nbsp; using &amp;nbsp; the &amp;nbsp; OracleParameter &amp;nbsp; class. &amp;nbsp; Using &amp;nbsp; the &amp;nbsp; array &amp;nbsp; bind &amp;nbsp; feature, &amp;nbsp; an &amp;nbsp; application &amp;nbsp; can &amp;nbsp; insert &amp;nbsp; multiple &amp;nbsp; rows &amp;nbsp; into &amp;nbsp; a &amp;nbsp; table &amp;nbsp; in &amp;nbsp; a &amp;nbsp; single &amp;nbsp; database &amp;nbsp; round-trip.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The &amp;nbsp; following &amp;nbsp; code &amp;nbsp; example &amp;nbsp; inserts &amp;nbsp; three &amp;nbsp; rows &amp;nbsp; into &amp;nbsp; the &amp;nbsp; Dept &amp;nbsp; table &amp;nbsp; with &amp;nbsp; a &amp;nbsp; single &amp;nbsp; database &amp;nbsp; round-trip. &amp;nbsp; The &amp;nbsp; OracleCommand &amp;nbsp; ArrayBindCount &amp;nbsp; property &amp;nbsp; defines &amp;nbsp; the &amp;nbsp; number &amp;nbsp; of &amp;nbsp; elements &amp;nbsp; of &amp;nbsp; the &amp;nbsp; array &amp;nbsp; to &amp;nbsp; use &amp;nbsp; when &amp;nbsp; executing &amp;nbsp; the &amp;nbsp; statement.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// &amp;nbsp; C# &amp;nbsp;&amp;nbsp;&lt;br /&gt;... &amp;nbsp;&amp;nbsp;&lt;br /&gt;// &amp;nbsp; Create &amp;nbsp; an &amp;nbsp; array &amp;nbsp; of &amp;nbsp; values &amp;nbsp; that &amp;nbsp; need &amp;nbsp; to &amp;nbsp; be &amp;nbsp; inserted &amp;nbsp;&amp;nbsp;&lt;br /&gt;int[] &amp;nbsp; myArrayDeptNo &amp;nbsp; = &amp;nbsp; new &amp;nbsp; int[3]{10, &amp;nbsp; 20, &amp;nbsp; 30}; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// &amp;nbsp; Set &amp;nbsp; the &amp;nbsp; command &amp;nbsp; text &amp;nbsp; on &amp;nbsp; an &amp;nbsp; OracleCommand &amp;nbsp; object &amp;nbsp;&amp;nbsp;&lt;br /&gt;cmd.CommandText &amp;nbsp; = &amp;nbsp; "insert &amp;nbsp; into &amp;nbsp; dept(deptno) &amp;nbsp; values &amp;nbsp; (:deptno) "; &amp;nbsp;&amp;nbsp;&lt;br /&gt;// &amp;nbsp; Set &amp;nbsp; the &amp;nbsp; ArrayBindCount &amp;nbsp; to &amp;nbsp; indicate &amp;nbsp; the &amp;nbsp; number &amp;nbsp; of &amp;nbsp; values &amp;nbsp;&amp;nbsp;&lt;br /&gt;cmd.ArrayBindCount &amp;nbsp; = &amp;nbsp; 3; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// &amp;nbsp; Create &amp;nbsp; a &amp;nbsp; parameter &amp;nbsp; for &amp;nbsp; the &amp;nbsp; array &amp;nbsp; operations &amp;nbsp;&amp;nbsp;&lt;br /&gt;OracleParameter &amp;nbsp; prm &amp;nbsp; = &amp;nbsp; new &amp;nbsp; OracleParameter( "deptno ", &amp;nbsp; OracleDbType.Int32); &amp;nbsp;&amp;nbsp;&lt;br /&gt;prm.Direction &amp;nbsp; = &amp;nbsp; ParameterDirection.Input; &amp;nbsp;&amp;nbsp;&lt;br /&gt;prm.Value &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;nbsp; myArrayDeptNo; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// &amp;nbsp; Add &amp;nbsp; the &amp;nbsp; parameter &amp;nbsp; to &amp;nbsp; the &amp;nbsp; parameter &amp;nbsp; collection &amp;nbsp;&amp;nbsp;&lt;br /&gt;cmd.Parameters.Add(prm); &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// &amp;nbsp; Execute &amp;nbsp; the &amp;nbsp; command &amp;nbsp;&amp;nbsp;&lt;br /&gt;cmd.ExecuteNonQuery(); &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See &amp;nbsp; Also:&amp;nbsp;&lt;br /&gt;&lt;br /&gt;"Value &amp;nbsp; " &amp;nbsp; for &amp;nbsp; more &amp;nbsp; information &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OracleParameter &amp;nbsp; Array &amp;nbsp; Bind &amp;nbsp; Properties&amp;nbsp;&lt;br /&gt;The &amp;nbsp; OracleParameter &amp;nbsp; object &amp;nbsp; provides &amp;nbsp; two &amp;nbsp; properties &amp;nbsp; for &amp;nbsp; granular &amp;nbsp; control &amp;nbsp; when &amp;nbsp; using &amp;nbsp; the &amp;nbsp; array &amp;nbsp; bind &amp;nbsp; feature:&amp;nbsp;&lt;br /&gt;&lt;br /&gt;ArrayBindSize &amp;nbsp; Property&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The &amp;nbsp; ArrayBindSize &amp;nbsp; property &amp;nbsp; is &amp;nbsp; an &amp;nbsp; array &amp;nbsp; of &amp;nbsp; integers &amp;nbsp; specifying &amp;nbsp; the &amp;nbsp; maximum &amp;nbsp; size &amp;nbsp; for &amp;nbsp; each &amp;nbsp; corresponding &amp;nbsp; value &amp;nbsp; in &amp;nbsp; an &amp;nbsp; array. &amp;nbsp; The &amp;nbsp; ArrayBindSize &amp;nbsp; property &amp;nbsp; is &amp;nbsp; similar &amp;nbsp; to &amp;nbsp; the &amp;nbsp; Size &amp;nbsp; property &amp;nbsp; of &amp;nbsp; an &amp;nbsp; OracleParameter &amp;nbsp; except &amp;nbsp; ArrayBindSize &amp;nbsp; specifies &amp;nbsp; the &amp;nbsp; size &amp;nbsp; for &amp;nbsp; each &amp;nbsp; value &amp;nbsp; in &amp;nbsp; an &amp;nbsp; array.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Before &amp;nbsp; the &amp;nbsp; execution, &amp;nbsp; the &amp;nbsp; application &amp;nbsp; must &amp;nbsp; populate &amp;nbsp; ArrayBindSize; &amp;nbsp; after &amp;nbsp; the &amp;nbsp; execution, &amp;nbsp; ODP.NET &amp;nbsp; populates &amp;nbsp; the &amp;nbsp; ArrayBindSize.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;ArrayBindSize &amp;nbsp; is &amp;nbsp; used &amp;nbsp; only &amp;nbsp; for &amp;nbsp; parameter &amp;nbsp; types &amp;nbsp; that &amp;nbsp; have &amp;nbsp; variable &amp;nbsp; length &amp;nbsp; such &amp;nbsp; as &amp;nbsp; Clob, &amp;nbsp; Blob &amp;nbsp; and &amp;nbsp; Varchar2. &amp;nbsp; The &amp;nbsp; size &amp;nbsp; is &amp;nbsp; represented &amp;nbsp; in &amp;nbsp; bytes &amp;nbsp; for &amp;nbsp; binary &amp;nbsp; datatypes &amp;nbsp; and &amp;nbsp; characters &amp;nbsp; for &amp;nbsp; the &amp;nbsp; Unicode &amp;nbsp; string &amp;nbsp; types. &amp;nbsp; The &amp;nbsp; count &amp;nbsp; for &amp;nbsp; string &amp;nbsp; types &amp;nbsp; does &amp;nbsp; not &amp;nbsp; include &amp;nbsp; the &amp;nbsp; terminating &amp;nbsp; character. &amp;nbsp; The &amp;nbsp; size &amp;nbsp; is &amp;nbsp; inferred &amp;nbsp; from &amp;nbsp; the &amp;nbsp; actual &amp;nbsp; size &amp;nbsp; of &amp;nbsp; the &amp;nbsp; value, &amp;nbsp; if &amp;nbsp; it &amp;nbsp; is &amp;nbsp; not &amp;nbsp; explicitly &amp;nbsp; set. &amp;nbsp; For &amp;nbsp; an &amp;nbsp; output &amp;nbsp; parameter, &amp;nbsp; the &amp;nbsp; size &amp;nbsp; of &amp;nbsp; each &amp;nbsp; value &amp;nbsp; is &amp;nbsp; set &amp;nbsp; by &amp;nbsp; ODP.NET. &amp;nbsp; The &amp;nbsp; ArrayBindSize &amp;nbsp; property &amp;nbsp; is &amp;nbsp; ignored &amp;nbsp; for &amp;nbsp; fixed &amp;nbsp; length &amp;nbsp; datatypes.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;ArrayBindStatus &amp;nbsp; Property&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The &amp;nbsp; ArrayBindStatus &amp;nbsp; property &amp;nbsp; is &amp;nbsp; an &amp;nbsp; array &amp;nbsp; of &amp;nbsp; OracleParameterStatus &amp;nbsp; values &amp;nbsp; specifying &amp;nbsp; status &amp;nbsp; of &amp;nbsp; each &amp;nbsp; corresponding &amp;nbsp; value &amp;nbsp; in &amp;nbsp; an &amp;nbsp; array &amp;nbsp; for &amp;nbsp; a &amp;nbsp; parameter. &amp;nbsp; This &amp;nbsp; property &amp;nbsp; is &amp;nbsp; similar &amp;nbsp; to &amp;nbsp; the &amp;nbsp; Status &amp;nbsp; property &amp;nbsp; of &amp;nbsp; OracleParameter, &amp;nbsp; except &amp;nbsp; that &amp;nbsp; ArrayBindStatus &amp;nbsp; specifies &amp;nbsp; the &amp;nbsp; status &amp;nbsp; for &amp;nbsp; each &amp;nbsp; value &amp;nbsp; in &amp;nbsp; an &amp;nbsp; array.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Before &amp;nbsp; the &amp;nbsp; execution, &amp;nbsp; the &amp;nbsp; application &amp;nbsp; must &amp;nbsp; populate &amp;nbsp; the &amp;nbsp; ArrayBindStatus &amp;nbsp; property &amp;nbsp; and &amp;nbsp; after &amp;nbsp; the &amp;nbsp; execution, &amp;nbsp; ODP.NET &amp;nbsp; populates &amp;nbsp; it. &amp;nbsp; Before &amp;nbsp; the &amp;nbsp; execution, &amp;nbsp; an &amp;nbsp; application &amp;nbsp; using &amp;nbsp; ArrayBindStatus &amp;nbsp; can &amp;nbsp; specify &amp;nbsp; a &amp;nbsp; NULL &amp;nbsp; value &amp;nbsp; for &amp;nbsp; the &amp;nbsp; corresponding &amp;nbsp; element &amp;nbsp; in &amp;nbsp; the &amp;nbsp; array &amp;nbsp; for &amp;nbsp; a &amp;nbsp; parameter. &amp;nbsp; After &amp;nbsp; the &amp;nbsp; execution, &amp;nbsp; ODP.NET &amp;nbsp; populates &amp;nbsp; the &amp;nbsp; ArrayBindStatus &amp;nbsp; array, &amp;nbsp; indicating &amp;nbsp; whether &amp;nbsp; the &amp;nbsp; corresponding &amp;nbsp; element &amp;nbsp; in &amp;nbsp; the &amp;nbsp; array &amp;nbsp; has &amp;nbsp; a &amp;nbsp; NULL &amp;nbsp; value &amp;nbsp; or &amp;nbsp; if &amp;nbsp; data &amp;nbsp; truncation &amp;nbsp; occurred &amp;nbsp; when &amp;nbsp; the &amp;nbsp; value &amp;nbsp; was &amp;nbsp; fetched.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Error &amp;nbsp; Handling &amp;nbsp; for &amp;nbsp; Array &amp;nbsp; Binding&amp;nbsp;&lt;br /&gt;If &amp;nbsp; an &amp;nbsp; error &amp;nbsp; occurs &amp;nbsp; during &amp;nbsp; an &amp;nbsp; Array &amp;nbsp; Bind &amp;nbsp; execution, &amp;nbsp; it &amp;nbsp; can &amp;nbsp; be &amp;nbsp; difficult &amp;nbsp; to &amp;nbsp; determine &amp;nbsp; which &amp;nbsp; element &amp;nbsp; in &amp;nbsp; the &amp;nbsp; Value &amp;nbsp; property &amp;nbsp; caused &amp;nbsp; the &amp;nbsp; error. &amp;nbsp; ODP.NET &amp;nbsp; provides &amp;nbsp; a &amp;nbsp; way &amp;nbsp; to &amp;nbsp; determine &amp;nbsp; the &amp;nbsp; row &amp;nbsp; where &amp;nbsp; the &amp;nbsp; error &amp;nbsp; occurred, &amp;nbsp; making &amp;nbsp; it &amp;nbsp; easier &amp;nbsp; to &amp;nbsp; find &amp;nbsp; the &amp;nbsp; element &amp;nbsp; in &amp;nbsp; the &amp;nbsp; row &amp;nbsp; that &amp;nbsp; caused &amp;nbsp; the &amp;nbsp; error.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;When &amp;nbsp; an &amp;nbsp; OracleException &amp;nbsp; is &amp;nbsp; thrown &amp;nbsp; during &amp;nbsp; an &amp;nbsp; Array &amp;nbsp; Bind &amp;nbsp; execution, &amp;nbsp; the &amp;nbsp; OracleErrorCollection &amp;nbsp; contains &amp;nbsp; one &amp;nbsp; or &amp;nbsp; more &amp;nbsp; OracleError &amp;nbsp; objects. &amp;nbsp; Each &amp;nbsp; of &amp;nbsp; these &amp;nbsp; OracleError &amp;nbsp; objects &amp;nbsp; represents &amp;nbsp; an &amp;nbsp; individual &amp;nbsp; error &amp;nbsp; that &amp;nbsp; occurred &amp;nbsp; during &amp;nbsp; the &amp;nbsp; execution &amp;nbsp; and &amp;nbsp; contains &amp;nbsp; a &amp;nbsp; provider-specific &amp;nbsp; property, &amp;nbsp; ArrayBindIndex, &amp;nbsp; which &amp;nbsp; indicates &amp;nbsp; the &amp;nbsp; row &amp;nbsp; number &amp;nbsp; at &amp;nbsp; which &amp;nbsp; the &amp;nbsp; error &amp;nbsp; occurred.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Code &amp;nbsp; Snippet&amp;nbsp;&lt;br /&gt;&lt;br /&gt;try &amp;nbsp; { &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; / &amp;nbsp; An &amp;nbsp; Array &amp;nbsp; Bind &amp;nbsp; execution &amp;nbsp; errors &amp;nbsp; out}&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;catch &amp;nbsp; (OracleException &amp;nbsp; e){&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine &amp;nbsp; ( "OracleException &amp;nbsp; {0} &amp;nbsp; occured ", &amp;nbsp; e.Message);&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; for &amp;nbsp; (int &amp;nbsp; i &amp;nbsp; = &amp;nbsp; 0; &amp;nbsp; i &amp;nbsp; &amp;lt; &amp;nbsp; e.Errors.Count; &amp;nbsp; i++)&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.WriteLine( "Array &amp;nbsp; Bind &amp;nbsp; Error &amp;nbsp; {0} &amp;nbsp; occured &amp;nbsp; at &amp;nbsp; Row &amp;nbsp; Number &amp;nbsp; {1} ", &amp;nbsp; e.Errors[i].Message,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.Errors[i].ArrayBindIndex);&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span  style="font-family: simsun; line-height: 23px; "&gt;}&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mythzz/aggbug/1977868.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mythzz/archive/2011/03/09/1977868.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mythzz/archive/2011/02/21/1959915.html</id><title type="text">castle配置数据库连接问题</title><summary type="text">castle 官方文档太郁闷了IDictionary&amp;lt;string, string&amp;gt; properties = new Dictionary&amp;lt;string, string&amp;gt;(); //sqlserver properties.Add(&amp;quot;connection.driver_class&amp;quot;, &amp;quot;NHibernate.Driver.SqlClientDriver&amp;quot;); properties.Add(&amp;quot;dialect&amp;quot;, &amp;quot;NHibernate.Dialect.MsSql2008Dialect&amp;quot;); </summary><published>2011-02-21T09:25:00Z</published><updated>2011-02-21T09:25:00Z</updated><author><name>mythzz</name><uri>http://www.cnblogs.com/mythzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mythzz/archive/2011/02/21/1959915.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mythzz/archive/2011/02/21/1959915.html"/><content type="html">&lt;div&gt;castle &amp;nbsp;官方文档太郁闷了&lt;/div&gt;&lt;div&gt;&lt;div&gt;IDictionary&amp;lt;string, string&amp;gt; properties = new Dictionary&amp;lt;string, string&amp;gt;();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; //sqlserver&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; properties.Add("dialect", "NHibernate.Dialect.MsSql2008Dialect");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.Add("connection.connection_string", "UID=sa;Password=mythzz;Initial Catalog=BZ_Ban;Data Source=.");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//oracle&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//properties.Add("connection.driver_class", "NHibernate.Driver.OracleClientDriver");&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//properties.Add("dialect", "&lt;span style="color: red; "&gt;NHibernate.Dialect.Oracle10gDialect&lt;/span&gt;");&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;span style="color: red; "&gt;//其中官网为OracleDialect，一直报错误（[NHibernate.MappingException] = {"Could not compile the mapping document: (string)"}InnerException = {"Could not instantiate dialect class NHibernate.Dialect.Oracle11gDialect"}）&lt;/span&gt;&amp;nbsp;，通过比对mssql产生的xml文件，修改了字段类型都没用，最后看到有的配置里有带版本号，试着加了个版本号居然成功，真让人无语的官方说明文档。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;//properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");&lt;/p&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//properties.Add("connection.connection_string", "Data Source=ora3;User ID=mythzz;Password=mythzz;");&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.Add("dialect", "NHibernate.Dialect.Oracle10gDialect");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.Add("connection.connection_string", "Data Source=ora3; User ID=mythzz; Password=mythzz");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.Add("connection.driver_class", "NHibernate.Driver.OracleClientDriver");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.Reflection.Assembly ass = System.Reflection.Assembly.Load("Modle");&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InPlaceConfigurationSource source = new InPlaceConfigurationSource();&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;source.Add(typeof(ActiveRecordBase), properties);&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;ActiveRecordStarter.Initialize(ass, source);&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mythzz/aggbug/1959915.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mythzz/archive/2011/02/21/1959915.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
