C#程式呼叫Oracle的Packages函式
阿新 • • 發佈:2018-12-27
1. oracle 增加package部分
CREATE OR REPLACE PACKAGE BODY Interface_PKG AS PROCEDURE GetTableData(IN_WorkDate IN Date, IO_CURSOR OUT T_CURSOR) IS V_CURSOR T_CURSOR; BEGIN OPEN V_CURSOR FOR select * from 測試表 where workdate = IN_WorkDate; IO_CURSOR := V_CURSOR; End GetTableData; END Interface_PKG;
2, C# 獲取資料部分
public DataTable getTableFromPKG(string Procedures ,DateTime Date) { OracleConnection conn = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["scott"]); System.Data.OracleClient.OracleCommand Com = new System.Data.OracleClient.OracleCommand(); Com.Connection = conn; Com.Parameters.Clear(); Com.CommandText = Procedures; Com.CommandType = CommandType.StoredProcedure; Com.Parameters.Add(new System.Data.OracleClient.OracleParameter("IN_WorkDate", System.Data.OracleClient.OracleType.DateTime)).Direction = ParameterDirection.Input; Com.Parameters.Add(new System.Data.OracleClient.OracleParameter("IO_CURSOR", System.Data.OracleClient.OracleType.Cursor)).Direction = ParameterDirection.Output; Com.Parameters[0].Value = Date; DataSet ds = new DataSet(); System.Data.OracleClient.OracleDataAdapter Oda = new System.Data.OracleClient.OracleDataAdapter(Com); if (conn.State == 0) conn.Open(); Oda.Fill(ds); DataTable dt = new DataTable(); dt = ds.Tables[0]; return dt; }