之前對Oracle的接觸都未牽涉到這一塊的,剛開始確實不知道怎麼處理,網上也查了寫資料,但是都比較散,所以還是整理一下吧,僅供大家參考:
1、oracle中存儲過程如下:
CREATE OR REPLACE PROCEDURE UP_dzSURFACE_EBGJSY(
TKALA VARCHAR2 , RC1 out PK_Var.RC )
AS
sSQL varchar2(2000) ;
begin
sSQL := ' select
TKALA as "舊編號" ,
GCEABG as "取樣深度" , "LOAD1" as "加荷" ,
GCDLAG as "a" , GCDKBD as "Es" , GCDLAQ as "回彈指數Cs"
from tbdzEBGJSY where Upper(TKALA)='''|| Upper(TKALA) || ''' ' ;
Open RC1 for sSQL;
return;
end UP_dzSURFACE_EBGJSY;
2、c#代碼如下:
//創建oracle參數
OracleParameter[] sqlParme = new OracleParameter[2]
//參數1
sqlParme[0] = new OracleParameter("RC1", OracleType.Cursor);
sqlParme[0].Direction = ParameterDirection.Output;
sqlParme[1] = new OracleParameter("TKALA", OracleType.VarChar);
sqlParme[1].Direction = ParameterDirection.Input;
sqlParme[1].Value = aHoleOldNum;
//從存儲過程中獲取dataTable數據源
private DataTable DBExecStoredProcedure(string storeureName, OracleParameter[] sqlParme)
{
try
{
//使用微軟的ORACLE訪問接口
if (DBHelper.G_pDBConn.State == ConnectionState.Closed)//獲取數據連接
DBHelper.G_pDBConn.Open();
OracleCommand oraCmd = new OracleCommand(storeureName, DBHelper.G_pDBConn);
oraCmd.CommandType = CommandType.StoredProcedure;
oraCmd.Parameters.Clear();//先清空
foreach (OracleParameter parme in sqlParme)
{
oraCmd.Parameters.Add(parme);
}
DataTable table = new DataTable();
DateTime BegTime = System.DateTime.Now;
OracleDataAdapter da1 = new OracleDataAdapter(oraCmd);//取出數據
da1.Fill(table);
return table;
}
catch (Exception ex)
{
MessageBox.Show("執行存儲過程失敗:"+ex.Message,"調試");
return null;
}
finally {
DBHelper.G_pDBConn.Close();
}
}
最後,大致的過程就是這樣了,希望對大家有幫助吧!