Дата публикации: 25.05.2006
Хранимые процедуры. Получение множества (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();
}
