Aracılığıyla paylaş


Komut Parametreleri

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

OLE DB sürücüsünü indirme

Parametreler, komut metninde soru işareti karakteriyle işaretlenir. Örneğin, aşağıdaki SQL ifadesi tek bir giriş parametresi için işaretlenmiştir:

{call SalesByCategory('Produce', ?)}  

Ağ trafiğini azaltarak performansı artırmak için, SQL Server için OLE DB Sürücüsü, komut çalıştırmadan önce ICommandWithParameters::GetParameterInfo veya ICommandPrepare::P repare çağrılmadıkça otomatik olarak parametre bilgisi türetmez. Bu, SQL Server için OLE DB Sürücüsünün otomatik olarak şunları yapmadığı anlamına gelir:

  • ICommandWithParameters::SetParameterInfo ile belirtilen veri türünün doğruluğunu doğrulayın.

  • Accessor bağlama bilgisinde belirtilen DBTYPE'dan, parametre için doğru SQL Server veri tipine eşlendirin.

Uygulamalar, parametrelerin SQL Server veri tipiyle uyumlu olmayan veri türlerini belirtirlerse bu yöntemlerden herhangi birinde olası hata veya hassasiyet kaybı alırlar.

Bunun olmaması için başvuru şunları yapmalıdır:

  • ICommandWithParameters::SetParameterInfo kodluysanız, pwszDataSourceType'ın parametre için SQL Server veri tipiyle eşleştiğinden emin olun.

  • Parametreye bağlı olan DBTYPE değerinin, bir accessor için sıkı kodlama yapıldığında, parametre için SQL Server veri tipiyle aynı türde olduğundan emin olun.

  • Uygulamayı ICommandWithParameters::GetParameterInfo çağıracak şekilde kodlayın; böylece sağlayıcı parametrelerin SQL Server veri tiplerini dinamik olarak elde edebilir. Bu, sunucuya fazladan bir ağ gidiş-dönüş anlamına gelir.

Uyarı

Sağlayıcı, herhangi bir SQL Server UPDATE veya DELETE ifadesi için ICommandWithParameters::GetParameterInfo çağrısını desteklemez; parametreleri içeren bir alt sorguya bağlı herhangi bir SQL ifadesi için; karşılaştırma ifadelerinde parametre belirteçleri içeren SQL ifadeleri için, örneğin veya nicelendirilmiş bir önlem için; veya parametrelerden birinin bir fonksiyonun parametresi olduğu sorgular. SQL ifadeleri toplu işlenirken sağlayıcı, ilk ifadeden sonraki ifadelerde parametre işaretleyicileri için ICommandWithParameters::GetParameterInfo çağrısını da desteklemez. Transact-SQL komutunda yorum (/* */) yapılmaz.

SQL Server için OLE DB Sürücüsü, SQL statement komutlarında giriş parametrelerini destekler. Prosedür çağrısı komutlarında, SQL Server için OLE DB Sürücüsü giriş, çıkış ve giriş/çıkış parametrelerini destekler. Çıkış parametre değerleri ya çalıştırma sırasında (yalnızca hiç satır kümesi döndürülmemişse) ya da tüm geri dönen satır kümeleri uygulama tarafından tükendiğinde uygulamaya geri döner. Geri dönen değerlerin geçerli olduğundan emin olmak için, satır kümesi tüketimini zorunlu kılmak için IMultipleResults kullanabilirsiniz.

Depolanan prosedür parametrelerinin adlarının DBPARAMBINDINFO yapısında belirtilmesi gerekmez. SQL Server için OLE DB Sürücüsünün parametre adını görmezden gelip yalnızca ICommandWithParameters::SetParameterInfopaketinin rgParamOrdinals üyesinde belirtilen ordinal kullanmasını belirtmek için pwszName üyesinin değeri olarak NULL kullanın. Komut metni hem isimli hem de isimsiz parametreler içeriyorsa, tüm isimsiz parametreler adlandırılmış parametrelerden önce belirtilmelidir.

Eğer bir saklanan prosedür parametresinin adı belirtilirse, SQL Server için OLE DB Sürücüsü ismin geçerli olup olmadığından emin olmak için kontrol eder. SQL Server için OLE DB Sürücüsü, tüketiciden hatalı bir parametre adı aldığında hata döndürür.

Uyarı

SQL Server XML ve kullanıcı tanımlı türler (UDT) desteğini açmak amacıyla, SQL Server için OLE DB Sürücüsü yeni bir ISSCommandWithParameters arayüzü uygular.

Ayrıca Bkz.

Komutlar