Rumah  >  Artikel  >  hujung hadapan web  >  prosedur tersimpan oracle dalam asp.net (gambar dan teks)_jquery

prosedur tersimpan oracle dalam asp.net (gambar dan teks)_jquery

WBOY
WBOYasal
2016-05-16 15:45:312147semak imbas

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.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn