Heim > Web-Frontend > js-Tutorial > Hauptteil

Gespeicherte Oracle-Prozedur in asp.net (Bild und Text)_jquery

WBOY
Freigeben: 2016-05-16 15:45:31
Original
2142 Leute haben es durchsucht

In großen Datenbanksystemen spielen gespeicherte Prozeduren und Trigger eine wichtige Rolle. Unabhängig davon, ob es sich um eine gespeicherte Prozedur oder einen Trigger handelt, handelt es sich um eine Sammlung von SQL-Anweisungen und Flusskontrollanweisungen.

ORACLE-Code

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;
Nach dem Login kopieren

C#-Code

/// <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);
  }
 }
Nach dem Login kopieren

Aufrufmethode

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);
Nach dem Login kopieren

Der obige Inhalt stellt die gespeicherten Oracle-Prozeduren in asp.net durch Code vor.

Als nächstes werde ich Ihnen die gespeicherte Oracle-Prozedur (Bild und Text) anhand der zweiten Methode vorstellen.

Bitte beachten Sie die folgenden Methoden und Schritte

Schritt 1: Konfigurieren Sie die Datenbank, die über den mit ORACLE gelieferten Net Manager verbunden werden muss, z. B. COST

Schritt 2: Öffnen Sie das PL/SQL-Datenbanktool, geben Sie den richtigen Benutzernamen und das richtige Passwort ein und klicken Sie auf OK, um den Benutzer einzugeben, der die gespeicherte Prozedur erstellen muss

Schritt 3: Verstehen Sie das Format allgemeiner gespeicherter Prozeduren

Erstellen oder ersetzen Sie den gespeicherten Prozedurnamen der Prozedur (Param1-Eingangstyp, Param2-Ausgangstyp)
als
Variablentyp 1 (Wertebereich);
Variablentyp 2 (Wertebereich);
Beginnen
Anweisungsblock
Ausnahme – Ausnahmebehandlung
Wenn andere dann
        Rollback;
Ende;

Schritt 4: Geben Sie die zu erstellende gespeicherte Prozedur in die SQL-Eingabeschnittstelle ein

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;
Nach dem Login kopieren

Wie unten gezeigt

Schritt 5: Testen Sie die gerade geschriebene gespeicherte Prozedur

exec sp_demo('male');

ENDE

Notizen

Sie können eine gespeicherte Prozedur nicht innerhalb einer anderen gespeicherten Prozedur löschen, Sie können nur eine andere gespeicherte Prozedur aufrufen

Wenn Sie die Prozedur „Erstellen“ oder „Ersetzen“ verwenden, achten Sie beim Erstellen der gespeicherten Prozedur darauf, dass sie nicht denselben Namen wie die vorhandene gespeicherte Prozedur unter dem Benutzer hat, da sonst die aktuelle gespeicherte Prozedur überschrieben wird
Gespeicherte Prozedurparameter haben keinen Wertebereich, in bedeutet eingehend, out bedeutet Ausgabe

Das Obige stellt die gespeicherten Oracle-Prozeduren auf zwei Arten vor. Ich hoffe, dass es für alle hilfreich ist.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage