先下载Download: 32-bit ODP.NET ODTwithODAC112030.zip
ODAC 11.2.0.3.0 with Oracle Developer Tools for Visual Studio
安装本机为了提取7个DLL
新建项目
连接字符串代码:
private void Button_Open_Click(object sender, EventArgs e)
{
string tns = "(DESCRIPTION =";
tns+="(ADDRESS_LIST =";
tns+="(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.98.87)(PORT = 1521)))";
tns+="(CONNECT_DATA =(SERVICE_NAME = TestDev) ) )";
string CON = "Data Source="+tns+";User Id=APPS;Password=123456;";
;
try
{
using (OracleConnection conn = new OracleConnection(CON))
{
conn.Open();
MessageBox.Show("Open");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在其他机器上打包安装测试成功,做了个实验最大的那个DLL不能删除
Oracle存储过程传统数组
/** create or replace package Pkg_Test is type myList is table of varchar2(32767) INDEX BY BINARY_INTEGER; TYPE DAY_ARRAY_TYPE IS VARRAY(3) OF VARCHAR2(2); procedure list(ilist in number_list); end; create or replace package body Pkg_Test is procedure list(ilist in myList) as begin for i in 1 .. ilist.count loop insert into apps.test (id) values (ilist(i)); end loop; commit; exception when others then rollback; end; end; * */ string tns = "(DESCRIPTION ="; tns+="(ADDRESS_LIST ="; tns+="(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.98.87)(PORT = 1521)))"; tns+="(CONNECT_DATA =(SERVICE_NAME = TestDev) ) )"; string CON = "Data Source="+tns+";User Id=APPS;Password=123456;"; ; try { using (OracleConnection conn = new OracleConnection(CON)) { if (conn.State == ConnectionState.Closed) conn.Open(); using (OracleCommand cmd = new OracleCommand("apps.Pkg_Test.list", conn)) { cmd.CommandType = CommandType.StoredProcedure; OracleParameter[] pars=new OracleParameter[1]; pars[0] = new OracleParameter("ilist", OracleDbType.Varchar2); pars[0].CollectionType = OracleCollectionType.PLSQLAssociativeArray; //int[] iArray = new int[pars[0].Size]; //for (int i = 0; i < iArray.Length; i++) //{ // iArray[i] = 25; //} //pars[0].ArrayBindSize = iArray; //pars[0].Value = new string[] { "100", "200", "300" }; List<string> list_obj = new List<string>(); for (int i = 1; i <=10; i++) //32767 list_obj.Add(i.ToString()); pars[0].Value = list_obj.ToArray(); cmd.Parameters.AddRange(pars); cmd.ExecuteNonQuery(); } } } catch(Exception ex) { MessageBox.Show(ex.Message); }