Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bazı veritabanı yönetim sistemleri, bir uygulamanın, saklı yordamın parametrelerini yordam çağrısında konumla değil, ada göre belirtmesine izin verir. Bu tür parametreler adlandırılmış parametreler olarak adlandırılır. ODBC, adlandırılmış parametrelerin kullanımını destekler. ODBC'de adlandırılmış parametreler yalnızca saklı yordamlara yapılan çağrılarda kullanılır ve diğer SQL deyimlerinde kullanılamaz.
Sürücü, adlandırılmış parametrelerin kullanılıp kullanılmadığını belirlemek için IPD'nin SQL_DESC_UNNAMED alanının değerini denetler. SQL_DESC_UNNAMED SQL_UNNAMED olarak ayarlanmadıysa, sürücü parametreyi tanımlamak için IPD'nin SQL_DESC_NAME alanındaki adı kullanır. Parametreyi bağlamak için bir uygulama SQLBindParameter'ı çağırarak parametre bilgilerini belirtebilir ve ardından SQLSetDescField'ı çağırarak IPD'nin SQL_DESC_NAME alanını ayarlayabilir. Adlandırılmış parametreler kullanıldığında, yordam çağrısındaki parametrenin sırası önemli değildir ve parametrenin kayıt numarası yoksayılır.
Adsız parametrelerle adlandırılmış parametreler arasındaki fark, tanımlayıcının kayıt numarası ile yordamdaki parametre numarası arasındaki ilişkidir. Adsız parametreler kullanıldığında, ilk parametre işaretçisi parametre tanımlayıcısında ilk kayıtla ilişkilendirilir ve bu da yordam çağrısındaki ilk parametreyle (oluşturma sırasında) ilişkilidir. Adlandırılmış parametreler kullanıldığında, ilk parametre işaretçisi yine parametre tanımlayıcısının ilk kaydıyla ilişkilidir, ancak tanımlayıcının kayıt numarası ile yordamdaki parametre numarası arasındaki ilişki artık mevcut değildir. Adlandırılmış parametreler tanımlayıcı kayıt numarasının yordam parametresi konumuna eşlemini kullanmaz; bunun yerine, tanımlayıcı kayıt adı yordam parametresi adıyla eşlenir.
Uyarı
IPD'nin otomatik popülasyonu etkinleştirilirse, sürücü tanımlayıcıyı, tanımlayıcı kayıtlarının sırası, adlandırılmış parametreler kullanılıp kullanılmasa bile yordam tanımındaki parametrelerin sırasıyla eşleşecek şekilde doldurur.
Adlandırılmış parametre kullanılırsa, tüm parametreler parametre olarak adlandırılmalıdır. Herhangi bir parametre adlandırılmış parametre değilse, parametrelerden hiçbiri adlandırılmış parametre olamaz. Adlandırılmış parametrelerin ve adlandırılmamış parametrelerin bir karışımı olsaydı, davranış sürücüye bağımlı olurdu.
Adlandırılmış parametrelere örnek olarak bir SQL Server saklı yordamının aşağıdaki gibi tanımlandığını varsayalım:
CREATE PROCEDURE test @title_id int = 1, @quote char(30) AS <blah>
Bu yordamda, ilk parametresinin @title_idvarsayılan değeri 1'dir. Bir uygulama, bu yordamı yalnızca bir dinamik parametre belirtecek şekilde çağırmak için aşağıdaki kodu kullanabilir. Bu parametre, "@quote" adlı adlandırılmış bir parametredir.
// Prepare the procedure invocation statement.
SQLPrepare(hstmt, "{call test(?)}", SQL_NTS);
// Populate record 1 of ipd.
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
30, 0, szQuote, 0, &cbValue);
// Get ipd handle and set the SQL_DESC_NAMED and SQL_DESC_UNNAMED fields
// for record #1.
SQLGetStmtAttr(hstmt, SQL_ATTR_IMP_PARAM_DESC, &hIpd, 0, 0);
SQLSetDescField(hIpd, 1, SQL_DESC_NAME, "@quote", SQL_NTS);
// Assuming that szQuote has been appropriately initialized,
// execute.
SQLExecute(hstmt);