亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net中調用oracle存儲過程的方法

2024-07-10 13:29:20
字體:
來源:轉載
供稿:網友

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

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

存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。

不多說了,本文通過兩種方法介紹asp.net中調用oracle存儲過程的方法,具體內容請看下面代碼。

調用oracle存儲過程方法一:

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. /// 執行oracle存儲過程返回多個結果集 
  3. /// </summary> 
  4. /// <param name="strProcName">存儲過程名稱</param> 
  5. /// <param name="ResultCount">返回個數</param> 
  6. /// <param name="paras">參數</param> 
  7. /// <returns>任意對象數組</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=數據庫;")) 
  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 轉為 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;//獲取當前行中的列數; 
  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("轉換出錯出錯!", ex); 

調用方法

 

 
  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); 

調用oracle存儲過程方法二:

存儲過程結構如下:

 

 
  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; 

下面講一下調用:

表結構

 

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

存儲過程

 

 
  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中調用oracle存儲過程的全部內容,希望對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性xxxx18| 欧美激情videos| 美女av一区二区| 午夜精品久久久久久久男人的天堂| 日韩一区二区三区在线播放| 亚洲无线码在线一区观看| 久久精品视频播放| 欧美在线视频免费播放| 欧美亚洲另类在线| 中文字幕av一区二区三区谷原希美| 国产福利成人在线| 日韩av大片免费看| 日本不卡视频在线播放| 精品亚洲aⅴ在线观看| www国产精品视频| 96pao国产成视频永久免费| 日韩电影网在线| 欧美多人乱p欧美4p久久| 欧美xxxx做受欧美| 青青草一区二区| 国产精品第一视频| 日韩在线观看网址| 精品少妇v888av| 中文字幕久热精品在线视频| 欧美日韩爱爱视频| 国产精品视频网站| 国产精品极品尤物在线观看| 久久久av亚洲男天堂| 亚洲国产精品va在线| 亚洲少妇中文在线| 国产精品一区二区久久国产| 亚洲黄在线观看| 日韩欧美亚洲一二三区| 国产视频自拍一区| 国产999精品| 欧美影院成年免费版| 日韩在线视频网站| 一本大道亚洲视频| 亚洲免费视频一区二区| 91久久国产精品| 国产精品一久久香蕉国产线看观看| 欧美极品xxxx| 国产一区二区三区在线播放免费观看| 国产欧美一区二区三区久久| 亚洲激情视频在线| 久久精品国产亚洲精品2020| 亚洲欧美综合另类中字| 亚洲日本中文字幕| 亚洲午夜性刺激影院| 久久免费精品日本久久中文字幕| 欧洲中文字幕国产精品| 在线色欧美三级视频| 久久精品免费电影| 欧美日韩在线观看视频小说| 亚洲性日韩精品一区二区| 国产精品69精品一区二区三区| 久久久精品一区二区| 久久精品免费电影| 欧美老女人性生活| 国内外成人免费激情在线视频| 久久精品中文字幕一区| 日本国产欧美一区二区三区| 成人黄色在线免费| 久久国产精品偷| 成人h片在线播放免费网站| 2019国产精品自在线拍国产不卡| 中日韩美女免费视频网址在线观看| 亚洲精品成人免费| 色综久久综合桃花网| 欧美在线免费视频| 亚洲精品欧美极品| 亚洲人成网7777777国产| 国产成人精品一区| 欧美日韩免费在线观看| 亚洲自拍偷拍色片视频| 国产男女猛烈无遮挡91| 91精品国产自产在线观看永久| 神马国产精品影院av| 色妞色视频一区二区三区四区| 亚洲福利精品在线| 91国产精品视频在线| 91在线免费看网站| 亚洲国产私拍精品国模在线观看| 亚洲自拍高清视频网站| 精品女同一区二区三区在线播放| 欧美性理论片在线观看片免费| 91精品在线观看视频| 高清欧美一区二区三区| 欧美黄色免费网站| 精品欧美一区二区三区| 国产成人精品午夜| 精品视频在线观看日韩| 91成人在线观看国产| 91国产在线精品| 日本午夜人人精品| 成人免费激情视频| 精品亚洲aⅴ在线观看| 精品偷拍一区二区三区在线看| 精品一区二区三区电影| 日韩av电影手机在线观看| 久久人体大胆视频| 91精品国产91| 国产裸体写真av一区二区| 国产精品丝袜视频| 九九九久久国产免费| 久久成人精品视频| 亚洲尤物视频网| 亚州国产精品久久久| 成人激情视频网| 国产区精品视频| 97精品国产91久久久久久| 亚洲欧美另类国产| 日韩女优人人人人射在线视频| 国语自产精品视频在线看| 色综合导航网站| 97视频在线观看亚洲| 欧美精品手机在线| 欧美丝袜第一区| 91啪国产在线| 高清日韩电视剧大全免费播放在线观看| 国产一区二区在线免费视频| 97视频在线免费观看| 久热精品视频在线| 2019最新中文字幕| 红桃av永久久久| 精品人伦一区二区三区蜜桃网站| 自拍偷拍亚洲一区| 欧美猛男性生活免费| 日韩一区在线视频| 国产精品成人va在线观看| 国产一区二区三区中文| 亚洲人成网站999久久久综合| 欧美高清电影在线看| 日韩二区三区在线| 欧美专区国产专区| 国产精品a久久久久久| 色综合伊人色综合网| 日韩av在线电影网| 国产欧美久久久久久| 91精品国产高清久久久久久| 91国内揄拍国内精品对白| 美日韩丰满少妇在线观看| 国产精品偷伦视频免费观看国产| 人九九综合九九宗合| 国产精品自产拍高潮在线观看| 性色av一区二区三区在线观看| 亚洲亚裔videos黑人hd| 亚洲欧美另类在线观看| 欧美黄网免费在线观看| 97香蕉久久夜色精品国产| 理论片在线不卡免费观看| 国产亚洲精品久久久优势| 亚洲精品wwww| 日韩欧美国产黄色| 国产成人涩涩涩视频在线观看| 国语自产在线不卡| 欧美大片在线看| 奇米四色中文综合久久| 精品国产一区二区三区在线观看| 97在线视频免费观看| 日韩经典中文字幕| 久久久免费在线观看| 97人洗澡人人免费公开视频碰碰碰| 狠狠操狠狠色综合网|