Calling a Stored Procedure (ole db)

Saklı yordam, sıfır veya daha fazla parametre olabilir. O da bir değer döndürebilirsiniz. Kullanırken SQL Serveryerel istemci ole db sağlayıcısı, bir saklı yordam parametreleri geçirilebilir:

  • Sabit kodlama veri değeri.

  • Parametrelerini belirtmek için bir parametre işaretçisi (?) kullanarak, parametre işaretçisi bir program değişken bağlamak ve ardından program değişken veri değeri koyun.

[!NOT]

Ararken SQL Serversaklı yordamlar, ole db ile Adlandırılmış parametreler kullanan parametre adları ile başlamalı '@' karakter. Bu bir SQL Serverbelirli kısıtlama. SQL ServerYerel istemci ole db sağlayıcısı mdac daha katı bir şekilde bu kısıtlamayı zorlar.

Parametreleri desteklemek için ICommandWithParameters arabirimi komut nesnesi üzerinde maruz. Parametreleri kullanmak için tüketici ilk Sağlayıcısı parametreleri çağırarak açıklar ICommandWithParameters::SetParameterInfo yöntemi (veya isteğe bağlı olarak aramaları arayan bir deyimi hazırlar GetParameterInfo yöntemi). Tüketici sonra arabellek yapısını belirtir ve bu arabellek parametre değerleri ulaştıran bir erişimci oluşturur. Son olarak, bu arabelleğe erişeni ve işaretçi ele geçirir Execute. Sonraki aramaları için Execute, tampon ve aramaları tüketici yeni parametre değerleri yerler Execute erişeni tanıtıcısı ve arabellek işaretçi.

Parametrelerini kullanarak geçici saklı yordamı çağıran bir komut ilk aramak gerekir ICommandWithParameters::SetParameterInfo komutu başarıyla hazırlanmış olabilir önce parametre bilgilerini tanımlamak için. Dış ad istemci tarafından kullanılan iç geçici saklı yordam adı farklıdır ve sqloledb geçici saklı yordam parametre bilgilerini belirlemek için sistem tabloları sorgulayamıyor çünkü.

Bu parametre bağlama işlemdeki adımlar şunlardır:

  1. DBPARAMBINDINFO yapıları bir dizi parametre bilgileri doldurun; başka bir deyişle, parametre adı, veri türü parametre ya da standart veri sağlayıcıya özgü adını adını yazın vb.. Dizideki her yapı bir parametre açıklar. Bu dizi daha sonra geçer SetParameterInfo yöntemi.

  2. Arama ICommandWithParameters::SetParameterInfo yöntem sağlayıcısı parametreleri tanımlamak için. SetParameterInfo her parametre yerel veri türünü belirtir. SetParameterInfo bağımsız değişkenleri vardır:

    • Sayıda parametre türü bilgilerini ayarlamak için.

    • Parametre sıra sayılarını türü bilgilerini ayarlamak için bir dizi.

    • DBPARAMBINDINFO yapıları dizisi.

  3. Bir parametre erişimcisi kullanarak oluşturmak IAccessor::CreateAccessor komut. Erişimci arabellek yapısını belirtir ve parametre değerlerini arabellekte yerleştirir. CreateAccessor komut, bağları kümesinden bir erişimci oluşturur. Bu bağların DBBINDING yapıları dizisi kullanarak tüketici tarafından açıklanmıştır. Her bağlamada tek bir parametre için tüketici arabellek ilişkilendirir ve gibi bilgileri içerir:

    • Bağlama uygulandığı parametre sıra sayısı.

    • Nedir (veri değeri, uzunluğu ve durumu) bağlı.

    • Bölümleri için arabellek uzaklığı.

    • Uzunluk ve veri değeri olarak bu tür tüketici arabellekte bulunmaktadır.

    Bir erişimci türü olan haccessor tutamacını tarafından tanımlanır. Bu tanıtıcı tarafından döndürülen CreateAccessor yöntemi. Her tüketici erişenine kullanarak bitirir, tüketici çağırmalısınız ReleaseAccessor tutar bellek serbest bırakmak için yöntem.

    Tüketici çağırdığında bir yöntem gibi ICommand::Execute, o tanıtıcı bir erişimci ve bir arabellek bir işaretçi geçirir. Sağlayıcı bu erişeni arabellekte bulunan verileri aktarma yöntemini belirlemek için kullanır.

  4. dbparams yapısında doldurun. Hangi giriş parametresi değerleri alınır ve hangi çıkış parametresi değerleri yazılır tüketici değişkenleri çalışma zamanında iletilir ICommand::Execute dbparams yapısı. dbparams yapısına üç öğe içerir:

    • Arabellek sağlayıcı giriş parametresi veri alır ve hangi sağlayıcının döndürdüğü için işaretçi parametresi veri bağlamaları erişeni tanıtıcısı tarafından belirtilen göre çıktı.

    • Arabellek parametrelerinde kümelerinin sayısı.

    • Adım 3'te oluşturulan erişeni işleci.

  5. Bağlamını kullanarak ICommand::Execute.

Saklı yordam çağırma yöntemleri

Bir saklı yordam yürütülürken SQL Server, SQL Serveryerel istemci ole db sağlayıcısı destekler:

  • odbc call çıkış sırası.

  • Uzaktan yordam çağrısı (rpc) çıkış sırası.

  • Transact-SQLexecute deyimi.

odbc call çıkış sırası

Parametre bilgilerini biliyorsanız, arama ICommandWithParameters::SetParameterInfo yöntem sağlayıcısı parametreleri tanımlamak için. Aksi takdirde, saklı yordam çağırma için odbc call sözdizimi kullanıldığında, sağlayıcı bir saklı yordam parametre bilgilerini bulmak için bir yardımcı işlevini çağırır.

Parametre bilgilerini (parametre meta) emin değilseniz, odbc call sözdizimi önerilir.

odbc call çıkış sırasını kullanarak bir yordamı çağırmak için genel sözdizimi şöyledir:

{?=call procedure_name**(parameter],parameter]...)**}

Örneğin:

{call SalesByCategory('Produce', '1995')}

{call SalesByCategory('Produce', '1995')}

rpc çıkış sırası

rpc çıkış sırası saklı yordamı çağıran için odbc call sözdizimini benzer. Birden çok kez yordamı çağırır, rpc çıkış sırası saklı yordam çağırma üç yöntemleri arasında en optimum performans sağlar.

Bir saklı yordamı yürütmek için rpc çıkış sırası kullanıldığında, sağlayıcı parametre bilgilerini (odbc call sözdizimi durumunda olduğu gibi) belirlemek için herhangi bir yardımcı işlevini çağırmaz. rpc sözdizimi için odbc call sözdizimi basit yani komut daha hızlı performans geliştirme ayrıştırılır. Bu durumda yürüterek parametre bilgilerini sağlamanız gereken ICommandWithParameters::SetParameterInfo.

rpc çıkış sırası dönüş değeri olması gerekir. Saklı yordam bir değer döndürmez, sunucu varsayılan olarak 0 döndürür. Üstelik, sen cant'açık bir SQL Serversaklı yordam imleç. Saklı yordam örtülü olarak hazırlanır ve çağrı ICommandPrepare::Prepare başarısız olur. rpc çağrısı hazırlamak yetersizlik nedeniyle, sütun meta veri sorgulayabilir değil; db_e_notprepared, IColumnsInfo::GetColumnInfo ve IColumnsRowset::GetColumnsRowset döndürür.

Tüm parametre meta verisi biliyorsanız, rpc çıkış sırası saklı yordamları yürütmek için önerilen yoldur.

Saklı bir yordamı çağırmak için rpc çıkış sırası örneğidir:

{rpc SalesByCategory}

{rpc SalesByCategory}

rpc çıkış sırası gösteren bir örnek uygulama için bkz: Saklı yordam (rpc sözdizimi kullanarak) ve işlem dönüş kodları ve çıkış parametreleri (ole db) Yürüt.

execute Transact-sql deyimi

odbc call çıkış sırasını ve rpc çıkış sırası saklı bir yordamı çağırmak için tercih edilen yöntemlerdir yerine execute deyimi. SQL ServerYerel istemci ole db sağlayıcısını kullanan rpc mekanizması SQL Serverkomut işleme en iyi duruma getirme. Bu rpc iletişim kuralı, çok parametre işleme ve sunucuda yapılan ifade ayrıştırma ortadan kaldırarak performansı artırır.

Bu bir örnektir Transact-SQL   execute deyimi:

EXECUTE SalesByCategory 'Produce', '1995'

EXECUTE SalesByCategory 'Produce', '1995'

Ayrıca bkz.

Diğer Kaynaklar

Saklı yordamlar