public void MultipleResultSets(TestCaseResult result) { DropProcedure(); ExecuteNonQuery( "create procedure bar ()\n" + "{\n" + " declare i int;\n" + " declare c char;\n" + " result_names (i);\n" + " result (1);\n" + " result (2);\n" + " end_result ();\n" + " result_names (c);\n" + " result ('a');\n" + " result ('b');\n" + " return 0;\n" + "}\n" ); VirtuosoCommand command = connection.CreateCommand(); command.CommandType = CommandType.StoredProcedure; command.CommandText = "bar"; VirtuosoDataReader reader = null; try { reader = command.ExecuteReader(); result.FailIfNotEqual(1, reader.FieldCount); result.FailIfNotEqual("i", reader.GetName(0).ToLower()); result.FailIfNotEqual(typeof(int), reader.GetFieldType(0)); result.FailIfNotEqual(true, reader.Read()); result.FailIfNotEqual(1, reader["i"]); result.FailIfNotEqual(true, reader.Read()); result.FailIfNotEqual(2, reader["i"]); result.FailIfNotEqual(false, reader.Read()); result.FailIfNotEqual(true, reader.NextResult()); result.FailIfNotEqual(1, reader.FieldCount); result.FailIfNotEqual("c", reader.GetName(0).ToLower()); result.FailIfNotEqual(typeof(string), reader.GetFieldType(0)); result.FailIfNotEqual(true, reader.Read()); result.FailIfNotEqual("a", reader["c"]); result.FailIfNotEqual(true, reader.Read()); result.FailIfNotEqual("b", reader["c"]); result.FailIfNotEqual(false, reader.NextResult()); } finally { if (reader != null) { reader.Close(); } command.Dispose(); } }