Aracılığıyla paylaş


Bir saklı yordam (OLE DB) çağrılıyor

Saklı yordam parametreleri, sıfır veya daha fazla olabilir.Ayrıca, bir değer döndürebilir.Kullanırken SQL Server Yerel istemci OLE DB sağlayıcı, bir saklı yordam parametreleri geçirilebilir:

  • Sabit değer veri kodlama.

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

Not

Ararken SQL Server saklı yordamlar, OLE DB ile adlandırılmış parametreler kullanan parametre adları '@' karakteri ile başlamalıdır. Bu bir SQL Server Belirli bir kısıtlama. The SQL Server Native istemci OLE DB sağlayıcı enforces this restriction more strictly than MDAC.

Parametreler, desteklemek için Icommandwithparameters arabirim komut nesnesi üzerinde gösterilir.Parametreleri kullanmak için , tüketici ilk sağlayıcı parametreleri çağırarak açıklar ICommandWithParameters::SetParameterInfo yöntem (veya isteğe bağlı olarak çağıran bir arama deyim hazırlar.GetParameterInfo yöntem).Tüketici, daha sonra bir arabellek yapısını belirler ve bu arabellekte parametre değerleri yerleştirir erişimci oluşturur.Son olarak, tanıtıcı erişimci ve bir işaretçi için arabellek geçirir yürütmek.Sonraki çaðrýlar hakkında yürütmekTüketici yeni bir parametre değerlerini arabellek ve çağrıları yerleştiriryürütmek erişimci tanıtıcısı ve arabellek işaretçi.

Geçici çağıran BIR komut saklı yordam parametrelerini kullanarak ilk çağrı olmalıdır ICommandWithParameters::SetParameterInfo komutu başarıyla hazırlanması için önce parametre bilgilerini tanımlamak için.Bunun nedeni, geçici olarak saklanan yordam için bir iç ad, bir istemci tarafından kullanılan bir dış ad farklıdır ve SQLOLEDB sistem tabloları, geçici olarak saklanan yordam için parametre bilgileri belirlemek için sorgulayamıyor olmasıdır.

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

  1. Parametre bilgileri DBPARAMBINDINFO yapıları dizisi; diğer bir deyişle, parametre adı, sağlayıcıya özgü ad parametresinin veri türü için veya bir standart veri türü adı girin ve benzeri.Her dizi yapısında bir parametre açıklar.Bu dizi sonra geçirilir SetParameterInfo yöntem.

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

    • Kendisi için bir parametre sayısını küme bilgileri yazın.

    • Parametre sıra sayılarını tür bilgileri ayarlamak üzere bir dizi.

    • DBPARAMBINDINFO yapıları dizisi.

  3. Bir parametre erişimcisi kullanarak oluşturduğunuz IAccessor::CreateAccessor komutu.erişimci arabellek yapısını belirtir ve parametre değerleri arabellekte yerleştirir.The CreateAccessor command creates an erişimci from a küme of bindings.Bu bağlantıları, tüketici tarafından DBBINDING yapıları dizisi kullanılarak açıklanmıştır.Her bağlamada tüketiciye arabellek için tek bir parametre ilişkilendirir ve bilgiler de içerir:

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

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

    • Arabellekte bölümleri için mahsup hesabı.

    • Tüketicinin arabelleğinde uzunluğunu ve veri değeri türü bulunmaktadır.

    erişimci HACCESSOR türüdür, tanıtıcı tarafından tanımlanır.Bu tanıtıcı tarafından döndürülen CreateAccessor yöntem.Tüketici erişimci kullanarak tamamlanır olduğunda, tüketici çağırmalısınız ReleaseAccessor yöntem, tutan bellek serbest bırakmak için.

    Ne zaman tüketici gibi yöntem çağırır ICommand::yürütmek, tanıtıcı erişimci ve bir işaretçi bir arabellek geçirir.Sağlayıcı bu erişimci arabellekte bulunan veri aktarma yöntemini belirlemek için kullanır.

  4. DBPARAMS yapısında doldurun.Hangi giriş parametresi değerleri alınır ve hangi çıktı parametresi için değerler yazılır tüketici değişkenleri, çalışma zamanında geçirildi ICommand::yürütmek DBPARAMS yapısı.DBPARAMS yapısını üç öğeyi içerir:

    • Çıkış parametresinin veri bağlamaları erişimci tanıtıcısı tarafından belirtilen'için göre arabellek sağlayıcı giriş parametresi veri alır ve kullanılacak sağlayıcının döndürdüğü için BIR işaretçi.

    • Arabellekte parametre kümesi sayısı.

    • Adım 3'te oluşturulan erişimci tanıtıcısı.

  5. Komutunu kullanarak yürütmek ICommand::yürütmek.

Arama yöntemleri bir saklı yordam

Saklı bir yordam çalıştırıldığında SQL Server, SQL Server Yerel istemci OLE DB sağlayıcı destekler:

  • ODBC CALL çıkış sırası.

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

  • Transact-SQL yürütmek deyim.

ODBC ÇAĞıR Escape sırası

Parametre bilgilerini biliyorsanız, arama ICommandWithParameters::SetParameterInfo yöntem sağlayıcı için parametreleri tanımlayın.Aksi halde, arayan bir saklı yordamın ODBC CALL sözdizimi kullanıldığında, sağlayıcı, saklı yordam parametre bilgilerini bulmak için bir yardımcı işlev çağırır.

Parametre bilgilerini emin olmadığınız, (parametre meta veriler), ODBC CALL sözdizimi önerilir.

ODBC CALL çıkış sırası'nı kullanarak bir yordamı çağırmak için genel sözdizimi aşağıdaki gibidir:

{[?=]callprocedure_name[([parameter][,[parameter]]...)]}

Örneğin:

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

RPC Escape sırası

RPC çıkış sırasını, arama ODBC CALL sözdizimine benzer bir saklı yordam.Birden çok kez yordamı çağırır, RPC çıkış sırası arasında üç arama yöntemlerini çoğu en iyi performans sağlar bir saklı yordam.

RPC çıkış sırasını, saklı bir yordamı çalıştırmak için kullanıldığında, sağlayıcı parametre bilgileri belirlemek için herhangi bir yardımcı işlevini çağırmıyor (gibi durum ODBC CALL sözdizimi).Komut, daha hızlı performans geliştirme ayrıştırılır için RPC sözdizimi ODBC CALL sözdizimi kolaydır.Bu durumda, yürüterek, parametre bilgilerini girmeniz gerekir ICommandWithParameters::SetParameterInfo.

RPC çıkış sırası bir döndürme değeri olması gerekir.saklı yordam bir değer döndürür, sunucu, varsayılan olarak 0 döndürür.Buna ek olarak, açılamıyor bir SQL Server saklı yordam imleç. saklı yordam örtülü olarak hazırlanır ve çağrısı ICommandPrepare::Prepare başarısız olur.Bir RPC çağrısı hazırlamak için yüklenememesi nedeniyle sütun meta veriler sorgu yürütebilir; IColumnsInfo::GetColumnInfo ve IColumnsRowset::GetColumnsRowset DB_E_NOTPREPARED döndürecektir.

Tüm parametre meta verisi biliyorsanız, RPC çıkış sırası için önerilen yol, depolanan yordamları yürütmek için ' dir.

Bu arama için RPC çıkış sırası örneğidir bir saklı yordam:

{rpc SalesByCategory}

Bir RPC çıkış sırasını gösteren bir örnek uygulama için bkz: Readme_Stored Procedure Using RPC Syntax (OLE DB).

Transact-SQL yürütmek deyim

ODBC CALL çıkış sırasını ve RPC çıkış sırasını, saklı bir yordamı çağırmak için tercih edilen yöntemi olan yerine yürütmek deyim.The SQL Server Native istemci OLE DB sağlayıcı uses the RPC mechanism of SQL Server to optimize command processing. Bu bir RPC protokol, parametre işleme ve sunucuda tamamlandı bildirimi ayrıştırma çoğunu ortadan kaldırarak performansı artırır.

This is an example of the Transact-SQLEXECUTE statement:

EXECUTE SalesByCategory 'Produce', '1995'

See Also

Other Resources