Publish date: 2006-05-25
Stored procedure. Obtaining of row set (C#, FW 2.0)
/// <summary> /// Stardard way for Stored procedures execution /// </summary> /// <param name="connection_str"></param> public void Run(string connection_str) { /* test */ OleDbConnection con = new OleDbConnection(connection_str); //create connection con.Open(); OleDbTransaction trans = con.BeginTransaction(); //begin transaction //select stored procedure in params OleDbCommand cmd_in_params = new OleDbCommand("select cust_no from CUSTOMER",con,trans); //select mail label through the stored procedure OleDbCommand cmd_stored_proc = new OleDbCommand("select * from mail_label(:cust_no)", con, trans); //add one IN parameter cmd_stored_proc.Parameters.Add("cust_no", OleDbType.Integer); //execure reader OleDbDataReader rdr = cmd_in_params.ExecuteReader(); //for each customer No while (rdr.Read()) { //retrive stored proc data cmd_stored_proc.Parameters["cust_no"].Value = rdr["cust_no"]; OleDbDataReader rdr_out = cmd_stored_proc.ExecuteReader(); Console.WriteLine("Customer #" + rdr["cust_no"]); //print out parameter values while (rdr_out.Read()) for (int i = 0; i < rdr_out.FieldCount; i++) Console.WriteLine(rdr_out.GetName(i) + "=" + rdr_out[i]); rdr_out.Close(); //must be closed before using again Console.WriteLine(); } rdr.Close(); trans.Commit(); con.Close(); }