Maison > interface Web > js tutoriel > le corps du texte

procédure stockée Oracle dans asp.net (image et texte)_jquery

WBOY
Libérer: 2016-05-16 15:45:31
original
2161 Les gens l'ont consulté

Dans les grands systèmes de bases de données, les procédures stockées et les déclencheurs jouent un rôle important. Qu'il s'agisse d'une procédure stockée ou d'un déclencheur, il s'agit d'un ensemble d'instructions SQL et d'instructions de contrôle de flux.

Code 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;
Copier après la connexion

Code 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);
  }
 }
Copier après la connexion

Méthode d'appel

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);
Copier après la connexion

Le contenu ci-dessus présente les procédures stockées Oracle dans asp.net via le code.

Ensuite, je vais vous présenter la procédure stockée Oracle (image et texte) via la deuxième méthode.

Veuillez consulter les méthodes et étapes suivantes

Étape 1 : Configurez la base de données qui doit être connectée via le Net Manager fourni avec ORACLE, telle que COST

Étape 2 : Ouvrez l'outil de base de données PL/SQL, entrez le nom d'utilisateur et le mot de passe corrects, puis cliquez sur OK pour saisir l'utilisateur qui doit créer la procédure stockée

Étape 3 : Comprendre le format des procédures stockées générales

créer ou remplacer le nom de la procédure stockée de la procédure (type param1 in, type param2 out)
comme
Type de variable 1 (plage de valeurs);
Type de variable 2 (plage de valeurs);
Commencer
Bloc de déclaration
Exception --Gestion des exceptions
Quand d'autres alors
        Restaurer ;
Fin ;

Étape 4 : Saisir la procédure stockée à créer dans l'interface de saisie 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;
Copier après la connexion

Comme indiqué ci-dessous

Étape 5 : Tester la procédure stockée qui vient d'être écrite

exec sp_demo('male');

FIN

Remarques

Vous ne pouvez pas supprimer une procédure stockée dans une autre procédure stockée, vous pouvez uniquement appeler une autre procédure stockée

Si vous utilisez créer ou remplacer une procédure, lors de la création de la procédure stockée, veillez à ne pas avoir le même nom que la procédure stockée existante sous l'utilisateur, ce qui entraînerait l'écrasement de la procédure stockée actuelle
Les paramètres de procédure stockée n'ont pas de plage de valeurs, in signifie entrant, out signifie sortie

Ce qui précède présente les procédures stockées Oracle de deux manières. J'espère que cela sera utile à tout le monde.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal