1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Executing Queries That Use COMPUTE BY pptx

2 316 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Executing Queries That Use Compute By
Tác giả Team Lib
Chuyên ngành SQL Server
Thể loại Bài viết
Định dạng
Số trang 2
Dung lượng 12,38 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

[ Team LiB ]Recipe 3.13 Executing Queries That Use COMPUTE BY Problem The SQL Server .NET data provider does not support the COMPUTE BY clause but you want to execute a COMPUTE BY stat

Trang 1

[ Team LiB ]

Recipe 3.13 Executing Queries That Use COMPUTE BY

Problem

The SQL Server NET data provider does not support the COMPUTE BY clause but you want to execute a COMPUTE BY statement using ADO.NET

Solution

Use the COMPUTE BY statement from the Command object of the OLE DB NET data provider

The sample code defines a COMPUTE BY statement and executes it using the

ExecuteReader( ) method of the OleDbCommand object Multiple result sets are returned

by the DataReader and then these are displayed

The C# code is shown in Example 3-13

Example 3-13 File: ComputeForm.cs

// Namespaces, variables, and constants

using System;

using System.Text;

using System.Data;

using System.Data.OleDb;

//

StringBuilder result = new StringBuilder( );

String sqlSelect = "select OrderID, ProductID, Quantity " +

"FROM [Order Details] " +

"ORDER BY ProductID " +

"COMPUTE SUM(quantity) by ProductID";

OleDbConnection conn = new OleDbConnection(

ConfigurationSettings.AppSettings["OleDb_Shape_ConnectString"]);

OleDbCommand cmd = new OleDbCommand(sqlSelect, conn);

conn.Open( );

Trang 2

OleDbDataReader dr = cmd.ExecuteReader( );

do

{

result.Append("Order\tProduct\tQuantity" + Environment.NewLine);

while(dr.Read( ))

{

result.Append(dr.GetInt32(0) + "\t" + dr.GetInt32(1) + "\t" +

dr.GetInt16(2) + Environment.NewLine);

}

// Get the sum

dr.NextResult( );

dr.Read( );

result.Append("SUM\t\t" + dr.GetInt32(0) + Environment.NewLine);

result.Append(Environment.NewLine);

} while(dr.NextResult( ));

dr.Close( );

conn.Close( );

resultTextBox.Text = result.ToString( );

Discussion

The SQL Server NET data provider does not support the COMPUTE BY clause, but the OLE DB NET data provider does The results are returned as multiple pairs of result sets, the first of which contains the selected details and the second containing the results

of the aggregate functions specified (the sum of the quantity ordered for the product in this example) in the COMPUTE BY clause This pattern is repeated for the remaining pairs of result sets

Microsoft states that the COMPUTE and COMPUTE BY clauses are provided in SQL Server 7.0 and later versions for backward compatibility The ROLLUP operator

provides similar functionality and is recommended instead The main difference is that ROLLUP returns a single result set instead of multiple result sets For more information about the ROLLUP operator, see Microsoft SQL Server Books Online

[ Team LiB ]

Ngày đăng: 24/12/2013, 05:15

TỪ KHÓA LIÊN QUAN