Oracle儲存過程例子
Dal.cs
OracleCommand myCmd = new OracleCommand(); --例項化
myCmd.CommandType = CommandType.StoredProcedure; ---儲存過程名稱
myCmd.CommandText = "PK_APAR.GET_ORG_TRADING_RECORD"; ---儲存過程名稱
myCmd.Parameters.Add("V_ORG_ID", OracleDbType.Long).Value = orgId; --引數
myCmd.Parameters.Add("V_START_TIME", OracleDbType.Date).Value = StartTime; --引數
myCmd.Parameters.Add("V_END_TIME", OracleDbType.Date).Value = EndTime; --引數
myCmd.Parameters.Add("V_DIRECTION", OracleDbType.Varchar2).Value = direction; --引數
myCmd.Parameters.Add("L_RESULT", OracleDbType.RefCursor).Direction = ParameterDirection.Output; --輸出引數
myCmd.Parameters.Add("RETURN_CODE", OracleDbType.Int64).Direction = ParameterDirection.Output; --輸出引數
myCmd.Parameters.Add("RETURN_TEXT", OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output; --輸出引數
DataSet ds = Utilities.FillData(myCmd);
return ds;
Utilities.cs
public static DataSet FillData(Oracle.DataAccess.Client.OracleCommand myCMD)
{
return FillData(myCMD,ConfigurationSettings.AppSettings["CenterDBConnStr"] --資料庫連線符);
}
public static DataSet FillData(Oracle.DataAccess.Client.OracleCommand myCMD,string connectString)
{
Oracle.DataAccess.Client.OracleConnection myConn = new Oracle.DataAccess.Client.OracleConnection(connectString);
myConn.Open();
Oracle.DataAccess.Client.OracleTransaction trans = myConn.BeginTransaction();
myCMD.Connection = myConn;
Oracle.DataAccess.Client.OracleDataAdapter myAdapter = new Oracle.DataAccess.Client.OracleDataAdapter(myCMD);
DataSet myData = new DataSet();
try
{
myAdapter.Fill(myData);
trans.Commit();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if( ConnectionState.Open == myConn.State )
{
myConn.Close();
}
}
return myData;
}
WebCofing
<!--使用者資料庫連線-->
PROCEDURE GET_ORG_TRADING_RECORD(V_ORG_ID IN TP_ORG.ORG_ID%TYPE,
V_START_TIME IN TA_AABANK_TRADE.TRADE_TIME%TYPE,
V_END_TIME IN TA_AABANK_TRADE.TRADE_TIME%TYPE,
V_DIRECTION IN varchar2,
L_RESULT OUT REFCURSOR,
RETURN_CODE OUT NUMBER,
RETURN_TEXT OUT VARCHAR2) IS
BEGIN
OPEN L_RESULT FOR
SELECT b.account_name,
a.trade_time,
d.base_code_name,
a.trade_direction,
a.trade_fee,
a.account_balance,
a.work_number,
a.trade_remark
from TA_AABANK_TRADE a, ta_aabank b, tp_org c, ta_base_code d
where a.aabank_id = b.aabank_id
and b.aabank_id = c.aabank_id
and a.trade_type_id = d.base_code_id
and c.org_id = V_ORG_ID
and a.trade_direction like V_DIRECTION
and a.trade_time between V_START_TIME and V_END_TIME;
RETURN_CODE := 0;
RETURN_TEXT := '成功!';
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RETURN_CODE := 1;
RETURN_TEXT := SQLERRM || '失敗!';
END GET_ORG_TRADING_RECORD;
OracleCommand myCmd = new OracleCommand(); --例項化
myCmd.CommandType = CommandType.StoredProcedure; ---儲存過程名稱
myCmd.CommandText = "PK_APAR.GET_ORG_TRADING_RECORD"; ---儲存過程名稱
myCmd.Parameters.Add("V_ORG_ID", OracleDbType.Long).Value = orgId; --引數
myCmd.Parameters.Add("V_START_TIME", OracleDbType.Date).Value = StartTime; --引數
myCmd.Parameters.Add("V_END_TIME", OracleDbType.Date).Value = EndTime; --引數
myCmd.Parameters.Add("V_DIRECTION", OracleDbType.Varchar2).Value = direction; --引數
myCmd.Parameters.Add("L_RESULT", OracleDbType.RefCursor).Direction = ParameterDirection.Output; --輸出引數
myCmd.Parameters.Add("RETURN_CODE", OracleDbType.Int64).Direction = ParameterDirection.Output; --輸出引數
myCmd.Parameters.Add("RETURN_TEXT", OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output; --輸出引數
DataSet ds = Utilities.FillData(myCmd);
return ds;
Utilities.cs
public static DataSet FillData(Oracle.DataAccess.Client.OracleCommand myCMD)
{
return FillData(myCMD,ConfigurationSettings.AppSettings["CenterDBConnStr"] --資料庫連線符);
}
public static DataSet FillData(Oracle.DataAccess.Client.OracleCommand myCMD,string connectString)
{
Oracle.DataAccess.Client.OracleConnection myConn = new Oracle.DataAccess.Client.OracleConnection(connectString);
myConn.Open();
Oracle.DataAccess.Client.OracleTransaction trans = myConn.BeginTransaction();
myCMD.Connection = myConn;
Oracle.DataAccess.Client.OracleDataAdapter myAdapter = new Oracle.DataAccess.Client.OracleDataAdapter(myCMD);
DataSet myData = new DataSet();
try
{
myAdapter.Fill(myData);
trans.Commit();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if( ConnectionState.Open == myConn.State )
{
myConn.Close();
}
}
return myData;
}
WebCofing
<!--使用者資料庫連線-->
PROCEDURE GET_ORG_TRADING_RECORD(V_ORG_ID IN TP_ORG.ORG_ID%TYPE,
V_START_TIME IN TA_AABANK_TRADE.TRADE_TIME%TYPE,
V_END_TIME IN TA_AABANK_TRADE.TRADE_TIME%TYPE,
V_DIRECTION IN varchar2,
L_RESULT OUT REFCURSOR,
RETURN_CODE OUT NUMBER,
RETURN_TEXT OUT VARCHAR2) IS
BEGIN
OPEN L_RESULT FOR
SELECT b.account_name,
a.trade_time,
d.base_code_name,
a.trade_direction,
a.trade_fee,
a.account_balance,
a.work_number,
a.trade_remark
from TA_AABANK_TRADE a, ta_aabank b, tp_org c, ta_base_code d
where a.aabank_id = b.aabank_id
and b.aabank_id = c.aabank_id
and a.trade_type_id = d.base_code_id
and c.org_id = V_ORG_ID
and a.trade_direction like V_DIRECTION
and a.trade_time between V_START_TIME and V_END_TIME;
RETURN_CODE := 0;
RETURN_TEXT := '成功!';
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RETURN_CODE := 1;
RETURN_TEXT := SQLERRM || '失敗!';
END GET_ORG_TRADING_RECORD;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29406868/viewspace-1064265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- oracle儲存過程許可權繼承小結Oracle儲存過程繼承
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- MySQL---------儲存過程MySql儲存過程
- 造數儲存過程儲存過程
- linux呼叫儲存過程Linux儲存過程
- 儲存過程——遊標儲存過程
- Winform呼叫儲存過程ORM儲存過程
- 儲存過程 傳 datatable儲存過程
- mysql儲存過程整理MySql儲存過程
- JAVA儲存過程(轉)Java儲存過程
- JdbcTemplate調儲存過程JDBC儲存過程
- MySQL之儲存過程MySql儲存過程
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- lightdb新特性--相容oracle儲存過程的聯合陣列Oracle儲存過程陣列
- .NET Core中使用Dapper操作Oracle儲存過程最佳實踐APPOracle儲存過程