失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c#调用oracle存储过程 c#调用oracle存储过程

c#调用oracle存储过程 c#调用oracle存储过程

时间:2021-07-15 21:35:42

相关推荐

c#调用oracle存储过程 c#调用oracle存储过程

c#调用oracle存储过程

CREATE OR REPLACE PACKAGE pkg_tableType IS type Tabletype is ref cursor; PROCEDURE SP_CPZD ( CPNO IN VARCHAR2, STATUS IN VARCHAR2, t_sql out Tabletype ); END; CREATE OR REPLACE package BODY pkg_tableType is PROCEDURE SP_CPZD ( CPNO IN VARCHAR2, STATUS IN VARCHAR2, t_sql out Tabletype ) IS BEGIN OPEN t_sql FOR select * from ball b where b.no=CPNO and b.type =STATUS ; END SP_CPZD; END pkg_tableType; #region 存储过程操作 /// /// 执行存储过程 /// /// 存储过程名 /// 存储过程参数 /// OracleDataReader public static OracleDataReader RunProcedure(string storedProcName, IDataParameter[] parameters ) { OracleConnection connection = new OracleConnection(connectionString); OracleDataReader returnReader; connection.Open(); OracleCommand command = BuildQueryCommand( connection,storedProcName, parameters ); mandType = CommandType.StoredProcedure; returnReader = command.ExecuteReader(); return returnReader; } /// /// 执行存储过程 /// /// 存储过程名 /// 存储过程参数 /// DataSet结果中的表名 /// DataSet public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName ) { using (OracleConnection connection = new OracleConnection(connectionString)) { DataSet dataSet = new DataSet(); connection.Open(); OracleDataAdapter sqlDA = new OracleDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters ); sqlDA.Fill(dataSet, tableName ); connection.Close(); return dataSet; } } /// /// 构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值) /// /// 数据库连接 /// 存储过程名 /// 存储过程参数 /// OracleCommand private static OracleCommand BuildQueryCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters) { OracleCommand command = new OracleCommand(storedProcName, connection ); mandType = CommandType.StoredProcedure; foreach (OracleParameter parameter in parameters) { command.Parameters.Add( parameter ); } return command; } /// /// 执行存储过程,返回影响的行数 /// /// 存储过程名 /// 存储过程参数 /// 影响的行数 /// public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected ) { using (OracleConnection connection = new OracleConnection(connectionString)) { int result; connection.Open(); OracleCommand command = BuildIntCommand(connection,storedProcName, parameters ); rowsAffected = command.ExecuteNonQuery(); result = (int)command.Parameters["ReturnValue"].Value; //Connection.Close(); return result; } } /// /// 创建 OracleCommand 对象实例(用来返回一个整数值) /// /// 存储过程名 /// 存储过程参数 /// OracleCommand 对象实例 private static OracleCommand BuildIntCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters) { OracleCommand command = BuildQueryCommand(connection,storedProcName, parameters ); command.Parameters.Add( new OracleParameter ( "ReturnValue", OracleType.Int32,4,ParameterDirection.ReturnValue, false,0,0,string.Empty,DataRowVersion.Default,null )); return command; } #endregion public DataSet GetCPResult(string s_aN_CPNO) { OracleParameter[] parameter = { new OracleParameter("CPNO",OracleType.VarChar,100), new OracleParameter("STATUS",OracleType.VarChar,100), new OracleParameter("t_sql", OracleType.Cursor)}; parameter[0].Value = s_aN_CPNO; parameter[1].Value = "3"; parameter[2].Direction = System.Data.ParameterDirection.Output; return RunProcedure("pkg_tabletype.sp_cpzd", parameter, "ds"); }

©著作权归作者所有:来自51CTO博客作者yangyoushan的原创作品,如需转载,请注明出处,否则将追究法律责任

如果觉得《c#调用oracle存储过程 c#调用oracle存储过程》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。