SQL Server Yerel İstemci Komut Parametreleri

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform System (PDW)

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 Native Client OLE veritabanı sağlayıcısı, ICommandWithParameters::GetParameterInfo veya ICommandPrepare::P repare çağrılmadıkça otomatik olarak parametre bilgisi türetmez. Bu, SQL Server Native Client OLE veritabanı sağlayı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.

Note

Sağlayıcı, herhangi bir SQL Server veya FROM cümlesi içeren herhangi bir ifade için ICommandWithParameters::GetParameterInfo çağrısını desteklemez; parametreler içeren bir alt sorguya bağlı herhangi bir SQL ifadesi için; karşılaştırma (like, veya nicel predicate) her iki ifade içinde parametre işaretçileri içeren SQL ifadeleri için; veya parametrelerden biri bir fonksiyonun parametresi olduğu sorgular için.UPDATEDELETE 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 Native Client OLE DB sağlayıcısı, SQL statement komutlarında giriş parametrelerini destekler. Prosedür çağrısı komutlarında, SQL Server Native Client OLE veritabanı sağlayı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. PwszName üyesinin değeri olarak NULL kullanın; böylece SQL Server Native Client OLE DB sağlayıcısının parametre adını görmezden gelip yalnızca ICommandWithParameters::SetParameterInfoüyesinin rgParamOrdinals üyesinde belirtilen ordinalı kullanması gerektiğini belirtin. Komut metni hem isimli hem de isimsiz parametreler içeriyorsa, tüm isimsiz parametreler adlandırılmış parametrelerden önce belirtilmelidir.

Bir saklanan prosedür parametresinin adı belirtilmişse, SQL Server Native Client OLE DB sağlayıcısı ismin geçerli olup olmadığından emin olmak için kontrol eder. SQL Server Native Client OLE veritabanı sağlayıcısı, tüketiciden hatalı bir parametre adı aldığında hata döner.

Note

SQL Server XML ve kullanıcı tanımlı türler (UDT) desteğini açmak için, SQL Server Native Client OLE veritabanı sağlayıcısı yeni bir ISSCommandWithParameters arayüzü uygular.