Aracılığıyla paylaş


Işlem sonuçlar'nı (ODBC)

Bir uygulama, bir SQL deyim gönderdikten sonra SQL Server herhangi bir sonuç verileri bir veya daha çok sonuç kümesi döndürür. Bir sonuç küme olan bir küme satır ve sütun, sorgu ölçütleriyle eşleşen.SELECT deyimi, katalog işlevlerini ve bazı saklı yordamlar, bir sonuç üreten küme sekmeli form içinde bir uygulama için kullanılabilir.Yürütülen SQL deyim, saklı yordam, birden çok komutları içeren bir toplu iş veya COMPUTE veya COMPUTE BY anahtar sözcükleri içeren bir SELECT deyiminin işlemek için birden çok sonuç kümesi olacaktır.

ODBC katalog işlevleri, verileri de alabilirsiniz.Örneğin, SQLColumns ilgili sütun veri kaynağındaki verileri alır.Bu sonuç kümeleri, sıfır veya daha çok satır içerebilir.

GRANT veya REVOKE, başka bir SQL deyimleri sonuç kümesi döndürmüyor.Bu deyim, gelen bir dönüş kodu SQLExecute or SQLExecDirect genellikle yalnızca deyim göstergesi başarılı olur.

Her bir INSERT, UPDATE ve DELETE deyimi bir sonuç döndüreceği için küme değişiklik tarafından etkilenen satırların sayısını içeren.Bu sayaç, uygulama, kullanılabilir bir çağrı yapılır SQLRowCount.odbc (3). x uygulamaları da çağırmalısınızSQLRowCount sonuç almak için küme veya SQLMoreResults iptal etmek için.Bir uygulama, bir toplu iş iş iş veya saklı yordam, birden çok INSERT içeren yürütüldüğünde, UPDATE veya deyimleri sonuç DELETE küme her bir değişikliği deyimi kullanılarak işlenmesi gerekir SQLRowCount veya kullanarak iptal edildi.SQLMoreResults.Bu saklı yordamını veya bir küme NOCOUNT ON deyimini toplu iş iş işleme dahil ederek iptal.

Transact-SQL, küme NOCOUNT deyim içerir.SQL Server üzerinde NOCOUNT seçeneği ayarladığınızda, bir deyim tarafından etkilenen satırların sayıları döndürmüyor ve SQLRowCount 0 değerini döndürür.The SQL Server Native istemci ODBC driver sürüm introduces a driver-specific SQLGetStmtAttr option, SQL_SOPT_SS_NOCOUNT_STATUS, to report on whether the NOCOUNT option is on or off.Her zaman SQLRowCount 0 döndürür, uygulama SQL_SOPT_SS_NOCOUNT_STATUS sınamanız gerekir.SQL_NC_ON döndürülürse 0 değeri SQLRowCount , yalnızca SQL Server bir satır sayımından döndürdü gösterir.SQL_NC_OFF döndürülürse, NOCOUNT devre dışı olduğu anlamına gelir ve bu değeri 0 ' SQLRowCount deyim her satırı etkileyeceğini değil gösterir.Uygulamaları değerinin görüntülenmelidir SQLRowCount SQL_SOPT_SS_NOCOUNT_STATUS SQL_NC_OFF olduğunda.Bu nedenle, programcılar SQL_SOPT_SS_NOCOUNT_STATUS sabit kalır kabul edemiyor büyük toplu işlemleri veya saklı yordamlar, birden çok küme NOCOUNT ifadeleri içeriyor olabilir.Her saat seçeneği test SQLRowCount 0 değerini döndürür.

Bazı Transact-SQL deyimlerini, sonuç kümeleri yerine iletileri verilerini döndürür.Zaman SQL Server Bu iletiler yerel istemci ODBC sürücüsü alır, bilgilendirme iletileri kullanılabilir olduğunu biliyor uygulama için SQL_SUCCESS_WITH_INFO geri döndürür. Uygulama sonra çağırabilir SQLGetDiagRec bu iletileri almak için.The Transact-SQL statements that work this way are:

  • dbcc

  • küme gösterim planı (kullanılabilir önceki sürümleri SQL Server ile)

  • küme İSTATİSTİKLERİ

  • Yazdırma

  • raiserror

The SQL Server Native istemci ODBC driver returns SQL_ERROR on a RAISERROR with a severity of 11 or higher. 19 Veya yüksek önem derecesi RAISERROR ise, bağlantı da bırakılır.

Sonuç olarak işlemek için bir SQL deyim uygulama ayarlar:

  • Sonuç özelliklerini belirler küme.

  • Sütunlar, değişkenler program bağlar.

  • Tek bir değer, değer tüm satırı veya birden çok satır değerleri alır.

  • Olup olmadığını daha fazla görmek için sınamaları küme s neden ve yeni sonuç özelliklerini belirlemek için döngü geri küme.

Veri kaynağından satırlar almak ve bunları uygulamaya döndüren işlemi getiriliyor denir.

COMPUTE ve COMPUTE BY sonuç kümeleri alınıyor

COMPUTE BY yan tümce, alt toplamları bir sonuç üretir küme; COMPUTE yan tümce, sonuç sonunda bir toplam oluşturur küme.The SQL Server Native istemci ODBC driver presents these totals and subtotals to the calling application by generating multiple result sets for each SELECT deyim.

Aşağıdaki örnek COMPUTE BY alt toplamların ve bir toplam üretmek için COMPUTE kullanır:

SELECT Title = CONVERT(char(20), title), type, price, advance
FROM Titles
WHERE ytd_sales IS NOT NULL
  AND type LIKE '%cook%'
ORDER BY type DESC
COMPUTE AVG(price), SUM(advance) BY type
COMPUTE SUM(price), SUM(advance)

Bu bir alt toplam ortalama fiyatı hesaplamasında neden ve her ilerlemelerden toplamı türü kitap ve daha sonra bir son Toplam Fiyat ve öncelikli hem veri neden.Sürücü, ilk sonucu sunar küme defterleri ilk rehberi türü'nden satırlar için.Bu sonra ikinci bir sonuç üretir küme iki COMPUTE BY sütun AVG(price) ve SUM(advance) için bu ilk ile küme defterlerini.Sonra bu üçüncü üretir sonuç kümesi defterlerini ve dördüncü bir sonraki grubunun sonuç kümesi the COMPUTE BY ile o grup için alt toplamlar.Sürücü bu sonuç kümeleri interleaves, kadar bu COMPUTE SUM(price) için SUM(advance) yan tümce ile toplam küme Nihai sonuç üretir.