麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

asp.net中調(diào)用oracle存儲(chǔ)過程的方法

2024-07-10 13:29:20
字體:
供稿:網(wǎng)友

存儲(chǔ)過程是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL 語句集,存儲(chǔ)在數(shù)據(jù)庫中經(jīng)過第一次編譯后再次調(diào)用不需要再次編譯,用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)來執(zhí)行它,下面給大家介紹下asp.net中調(diào)用oracle存儲(chǔ)過程的方法,需要的朋友可以參考下

存儲(chǔ)過程(Stored Procedure)是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL 語句集,存儲(chǔ)在數(shù)據(jù)庫中經(jīng)過第一次編譯后再次調(diào)用不需要再次編譯,用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來執(zhí)行它。

存儲(chǔ)過程是數(shù)據(jù)庫中的一個(gè)重要對(duì)象,任何一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫應(yīng)用程序都應(yīng)該用到存儲(chǔ)過程。

不多說了,本文通過兩種方法介紹asp.net中調(diào)用oracle存儲(chǔ)過程的方法,具體內(nèi)容請(qǐng)看下面代碼。

調(diào)用oracle存儲(chǔ)過程方法一:

ORACLE代碼

 

 
  1. CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR,MYCS2 OUT SYS_REFCURSOR,a out varchar)as 
  2. BEGIN 
  3. a:='test'
  4. OPEN MYCS1 FOR 
  5. SELECT 1 from dual; 
  6. OPEN MYCS2 FOR 
  7. SELECT 2 from dual; 
  8.  
  9. END; 

C#代碼

 

 
  1. /// <summary> 
  2. /// 執(zhí)行oracle存儲(chǔ)過程返回多個(gè)結(jié)果集 
  3. /// </summary> 
  4. /// <param name="strProcName">存儲(chǔ)過程名稱</param> 
  5. /// <param name="ResultCount">返回個(gè)數(shù)</param> 
  6. /// <param name="paras">參數(shù)</param> 
  7. /// <returns>任意對(duì)象數(shù)組</returns> 
  8. public object[] ExcuteProc_N_Result(string strProcName, int ResultCount, params OracleParameter[] paras) 
  9. using (OracleConnection conn = new OracleConnection("User ID=用戶名;Password=密碼;Data Source=數(shù)據(jù)庫;")) 
  10. OracleCommand cmd = new OracleCommand(strProcName, conn); 
  11. if (paras != null && paras.Length > 0) 
  12. for (int j = 0; j < paras.Length; j++) 
  13. if (paras[j].Value == null
  14. paras[j].Value = DBNull.Value; 
  15. cmd.Parameters.AddRange(paras); 
  16. cmd.CommandType = CommandType.StoredProcedure; 
  17. conn.Open(); 
  18. cmd.ExecuteNonQuery(); 
  19. int i = 0; 
  20. //int nOutputParametersCount = 0; 
  21. object[] objResult = new object[ResultCount]; 
  22. foreach (OracleParameter p in cmd.Parameters) 
  23. if (p.Direction == ParameterDirection.Output || p.Direction == ParameterDirection.InputOutput) 
  24. if (p.Value is OracleDataReader) 
  25. OracleDataReader reader = p.Value as OracleDataReader; 
  26. objResult[i++] = ConvertDataReaderToDataTable(reader); 
  27. else 
  28. objResult[i++] = p.Value; 
  29. return objResult; 
  30. /// <summary>  
  31. /// 將DataReader 轉(zhuǎn)為 DataTable  
  32. /// </summary>  
  33. /// <param name="DataReader">OleDbDataReader</param>  
  34. protected DataTable ConvertDataReaderToDataTable(OracleDataReader reader) 
  35. DataTable objDataTable = new DataTable("TmpDataTable"); 
  36. try 
  37. int intFieldCount = reader.FieldCount;//獲取當(dāng)前行中的列數(shù); 
  38. for (int intCounter = 0; intCounter <= intFieldCount - 1; intCounter++) 
  39. objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter)); 
  40. //populate datatable  
  41. objDataTable.BeginLoadData(); 
  42. //object[] objValues = new object[intFieldCount -1];  
  43. object[] objValues = new object[intFieldCount]; 
  44. while (reader.Read()) 
  45. reader.GetValues(objValues); 
  46. objDataTable.LoadDataRow(objValues, true); 
  47. reader.Close(); 
  48. objDataTable.EndLoadData(); 
  49. return objDataTable; 
  50. catch (Exception ex) 
  51. throw new Exception("轉(zhuǎn)換出錯(cuò)出錯(cuò)!", ex); 

調(diào)用方法

 

 
  1. OracleParameter[] oracleParameter = new OracleParameter[]{ 
  2. new OracleParameter("MYCS1",OracleType.Cursor), 
  3. new OracleParameter("MYCS2",OracleType.Cursor), 
  4. new OracleParameter("a",OracleType.VarChar,200), 
  5. }; 
  6. oracleParameter[0].Direction = ParameterDirection.Output; 
  7. oracleParameter[1].Direction = ParameterDirection.Output; 
  8. oracleParameter[2].Direction = ParameterDirection.Output; 
  9.  
  10. object[] xxx = ExcuteProc_N_Result("gd_CURSOR", 3, oracleParameter); 

調(diào)用oracle存儲(chǔ)過程方法二:

存儲(chǔ)過程結(jié)構(gòu)如下:

 

 
  1. Create or Replace Procedure xx_yy 
  2. i_OrderID in number, 
  3. i_ReturnValue out number 
  4. is 
  5. v_RealValue number; 
  6. v_TotalValue number; 
  7. v_AdvendorID number; 
  8. begin 
  9. 自己寫就行 
  10. end; 

下面講一下調(diào)用:

表結(jié)構(gòu)

 

 
  1. create table ORDERTABLE 
  2. ORDERID NUMBER not null
  3. TEXT NUMBER not null 

存儲(chǔ)過程

 

 
  1. i_OrderID in number, 
  2. i_ReturnValue out number 
  3. is 
  4. spass ordertable.text%type; 
  5. begin 
  6. select text into spass from ordertable where orderid=i_OrderID;  
  7. i_ReturnValue:=spass; 
  8. exception 
  9. when no_data_found 
  10. then i_ReturnValue:=-1;  
  11. end; 

源碼:

 

 
  1. using System.Data .OracleClient ;//(別忘了添加) 
  2. OracleConnection Oraclecon = new OracleConnection ("Password=dloco;User ID=dloco;Data Source=dloco;"); 
  3. OracleCommand myCMD = new OracleCommand(); 
  4. OracleParameter[] parameters = { new OracleParameter("i_OrderID", OracleType.Number, 10),new OracleParameter("i_ReturnValue",OracleType.Number,10 )}; 
  5. parameters[0].Value = 1; 
  6. parameters[1].Direction = ParameterDirection.Output; 
  7.  
  8. myCMD.Connection = Oraclecon; 
  9. myCMD.CommandType = CommandType.StoredProcedure; 
  10. myCMD.CommandText = "dloco.xx_yy"
  11.  
  12. myCMD.Parameters .Add (parameters[0]); 
  13. myCMD.Parameters .Add (parameters[1]); 
  14.  
  15. myCMD.Connection.Open();  
  16.  
  17. myCMD.ExecuteNonQuery();  
  18.  
  19. string result=myCMD.Parameters["i_ReturnValue"].Value.ToString(); 
  20. MessageBox.Show (result); 
  21.  
  22. Oraclecon.Close(); 

以上就是asp.net中調(diào)用oracle存儲(chǔ)過程的全部內(nèi)容,希望對(duì)大家有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 午夜精品久久久久久久99热浪潮 | 免费一级在线视频 | 欧美黄色片一级 | 久久成人激情视频 | 护士xxxx| 视频一区 中文字幕 | 最新中文字幕免费视频 | 国产精品视频导航 | 久久99国产伦子精品免费 | 国产黄色录像片 | 久久久久国产成人免费精品免费 | 爽爽视频免费看 | 一级性生活视频 | 一级尻逼视频 | 久久中文一区 | 成人做爰高潮片免费视频韩国 | 久草在线播放视频 | 国产高清成人久久 | 可以看逼的视频 | 男女无遮挡羞羞视频 | 久久影院在线观看 | 在线观看免费污视频 | 国产88久久久国产精品免费二区 | 国产精品一区二区三区在线播放 | 手机在线看片国产 | 香蕉久久久精品 | 亚洲一级电影在线观看 | 精品国产一区二区三区四 | 免费毛片在线视频 | 中国fx性欧美xxxx | 国产午夜精品一区二区三区免费 | 美女擦逼 | 懂色av懂色aⅴ精彩av | 香蕉成人在线观看 | 久久久久一区二区三区四区五区 | 依人九九宗合九九九 | 综合日韩av | 国产69精品福利视频 | 久国产| 91在线视频导航 | 91色琪琪电影亚洲精品久久 |