Rumah > Artikel > hujung hadapan web > prosedur tersimpan oracle dalam asp.net (gambar dan teks)_jquery
Dalam sistem pangkalan data yang besar, prosedur tersimpan dan pencetus memainkan peranan penting. Sama ada ia adalah prosedur tersimpan atau pencetus, ia adalah koleksi pernyataan SQL dan pernyataan kawalan aliran.
Kod ORACLE
CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR,MYCS2 OUT SYS_REFCURSOR,a out varchar)as BEGIN a:='test'; OPEN MYCS1 FOR SELECT 1 from dual; OPEN MYCS2 FOR SELECT 2 from dual; END;
Kod C#
/// <summary> /// 执行oracle存储过程返回多个结果集 /// </summary> /// <param name="strProcName">存储过程名称</param> /// <param name="ResultCount">返回个数</param> /// <param name="paras">参数</param> /// <returns>任意对象数组</returns> public object[] ExcuteProc_N_Result(string strProcName, int ResultCount, params OracleParameter[] paras) { using (OracleConnection conn = new OracleConnection("User ID=用户名;Password=密码;Data Source=数据库;")) { OracleCommand cmd = new OracleCommand(strProcName, conn); if (paras != null && paras.Length > 0) { for (int j = 0; j < paras.Length; j++) { if (paras[j].Value == null) { paras[j].Value = DBNull.Value; } } } cmd.Parameters.AddRange(paras); cmd.CommandType = CommandType.StoredProcedure; conn.Open(); cmd.ExecuteNonQuery(); int i = 0; //int nOutputParametersCount = 0; object[] objResult = new object[ResultCount]; foreach (OracleParameter p in cmd.Parameters) { if (p.Direction == ParameterDirection.Output || p.Direction == ParameterDirection.InputOutput) { if (p.Value is OracleDataReader) { OracleDataReader reader = p.Value as OracleDataReader; objResult[i++] = ConvertDataReaderToDataTable(reader); } else { objResult[i++] = p.Value; } } } return objResult; } } /// <summary> /// 将DataReader 转为 DataTable /// </summary> /// <param name="DataReader">OleDbDataReader</param> protected DataTable ConvertDataReaderToDataTable(OracleDataReader reader) { DataTable objDataTable = new DataTable("TmpDataTable"); try { int intFieldCount = reader.FieldCount;//获取当前行中的列数; for (int intCounter = 0; intCounter <= intFieldCount - 1; intCounter++) { objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter)); } //populate datatable objDataTable.BeginLoadData(); //object[] objValues = new object[intFieldCount -1]; object[] objValues = new object[intFieldCount]; while (reader.Read()) { reader.GetValues(objValues); objDataTable.LoadDataRow(objValues, true); } reader.Close(); objDataTable.EndLoadData(); return objDataTable; } catch (Exception ex) { throw new Exception("转换出错出错!", ex); } }
Kaedah panggilan
OracleParameter[] oracleParameter = new OracleParameter[]{ new OracleParameter("MYCS1",OracleType.Cursor), new OracleParameter("MYCS2",OracleType.Cursor), new OracleParameter("a",OracleType.VarChar,200), }; oracleParameter[0].Direction = ParameterDirection.Output; oracleParameter[1].Direction = ParameterDirection.Output; oracleParameter[2].Direction = ParameterDirection.Output; object[] xxx = ExcuteProc_N_Result("gd_CURSOR", 3, oracleParameter);
Kandungan di atas memperkenalkan prosedur tersimpan oracle dalam asp.net melalui kod.
Seterusnya, saya akan memperkenalkan prosedur tersimpan oracle (gambar dan teks) kepada anda melalui kaedah kedua.
Sila lihat kaedah dan langkah berikut
Langkah 1: Konfigurasikan pangkalan data yang perlu disambungkan melalui Pengurus Bersih yang disertakan dengan ORACLE, seperti KOS
Langkah 2: Buka alat pangkalan data PL/SQL, masukkan nama pengguna dan kata laluan yang betul, dan klik OK untuk memasukkan pengguna yang perlu membuat prosedur tersimpan
Langkah 3: Fahami format prosedur tersimpan umum
buat atau gantikan nama prosedur yang disimpan prosedur (jenis param1, jenis keluar param2)
sebagai
Pembolehubah 1 jenis (julat nilai);
Pembolehubah 2 jenis (julat nilai);
Mulakan
Blok kenyataan
Pengecualian --Pengendalian pengecualian
Apabila orang lain kemudian
Balik semula;
Tamat;
Langkah 4: Masukkan prosedur tersimpan yang akan dibuat dalam antara muka input SQL
create or replace procedure sp_demo(param1 in varchar2,param2 out varchar2) /* * 存储过程实例 */ as cnt int; rst varchar2(100) Begin Select count(*) into cst from Tab_Demo where Col_Value = param1; If (cst > 0) then --判断条件 param2 := '有匹配的值'; Else param2 := '无匹配的值'; End if; Exception When others then Rollback; End;
Seperti yang ditunjukkan di bawah
Langkah 5: Uji prosedur tersimpan yang baru ditulis
exec sp_demo('lelaki');
TAMAT
Nota
Anda tidak boleh memadamkan prosedur tersimpan dalam prosedur tersimpan lain, anda hanya boleh memanggil prosedur tersimpan lain
Jika anda menggunakan prosedur cipta atau ganti, semasa mencipta prosedur tersimpan, berhati-hati agar tidak mempunyai nama yang sama dengan prosedur tersimpan sedia ada di bawah pengguna, menyebabkan prosedur tersimpan semasa ditimpa
Parameter prosedur tersimpan tidak mempunyai julat nilai, dalam bermakna masuk, keluar bermakna output
Di atas memperkenalkan prosedur tersimpan Oracle dalam dua cara. Saya harap ia akan membantu semua orang.