您好,登錄后才能下訂單哦!
1、--Oracle 創建包 申明自定義游標類型
create or replace package pk_Var is
type csr_tp is ref cursor;
end;
2、--Oracle 創建存儲過程返回數據集合
CREATE OR REPLACE PROCEDURE pr_getdata(
v_empno VARCHAR2 , RC1 out PK_Var.csr_tp )
AS
sSQL varchar2(2000) ;
begin
sSQL := ' select * from emp where empno=v_empno' ;
Open RC1 for sSQL;
return;
end pr_getdata;
3、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();
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。