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.
SQL deyimlerindeki parametrelerde olduğu gibi, SQLBulkOperations veya SQLSetPos ile satırları güncelleştirirken veya SQLBulkOperations ile satır eklerken uzun veriler gönderilebilir. Veriler parçalar halinde gönderilir ve SQLPutData'ya birden çok çağrı yapılır. Yürütme zamanında veri gönderilen sütunlar, yürütme sırasında veri sütunları olarak bilinir.
Uyarı
Bir uygulama aslında SQLPutData ile yürütme zamanında herhangi bir veri türünü gönderebilir, ancak yalnızca karakter ve ikili veriler parçalar halinde gönderilebilir. Ancak, veriler tek bir arabelleğe sığacak kadar küçükse, genellikle SQLPutData kullanmak için bir neden yoktur. Arabelleği bağlamak ve sürücünün arabellekten verileri almasına izin vermek çok daha kolaydır.
Uzun veri sütunları genellikle bağlı olmadığından, uygulamanın SQLBulkOperations veya SQLSetPos çağrısından önce sütunu bağlaması ve SQLBulkOperations veya SQLSetPos çağrısından sonra bağlamasını kaldırması gerekir. SQLBulkOperations veya SQLSetPos yalnızca ilişkili sütunlarda çalıştığından ve SQLGetData'nın sütundan veri almak için kullanılabilmesi için ilişkisiz olması gerektiğinden sütunun bağlı olması gerekir.
Yürütme zamanında veri göndermek için uygulama aşağıdakileri yapar:
Veri değeri yerine satır kümesi arabelleğine 32 bitlik bir değer yerleştirir. Bu değer daha sonra uygulamaya döndürülür, bu nedenle uygulamanın sütunun sayısı veya veri içeren bir dosyanın tanıtıcısı gibi anlamlı bir değere ayarlaması gerekir.
Uzunluk/gösterge arabelleğindeki değeri SQL_LEN_DATA_AT_EXEC(uzunluk) makrosunun sonucuna ayarlar. Bu değer sürücüye parametre verilerinin SQLPutData ile gönderileceğini gösterir. Uzunluk değeri, uzun verinin kaç bayt göndereceğini bilmesi ve bu nedenle önceden yer ayırması gereken bir veri kaynağına uzun veri gönderirken kullanılır. Bir veri kaynağının bu değeri gerektirip gerektirmediğini belirlemek için uygulama, SQL_NEED_LONG_DATA_LEN seçeneğiyle SQLGetInfo'yı çağırır. Tüm sürücülerin bu makroya destek vermesi gerekir; veri kaynağı bayt uzunluğunu gerektirmiyorsa, sürücü bunu yoksayabilir.
SQLBulkOperations veya SQLSetPos çağrıları. Sürücü, uzunluk/gösterge arabelleğinin SQL_LEN_DATA_AT_EXEC(uzunluk) makrosunun sonucunu içerdiğini bulur ve işlevin dönüş değeri olarak SQL_NEED_DATA döndürür.
SQL_NEED_DATA dönüş değerine yanıt olarak SQLParamData'yi çağırır. Uzun verilerin gönderilmesi gerekiyorsa , SQLParamData SQL_NEED_DATA döndürür. ValuePtrPtr bağımsız değişkeninin işaret ettiği arabellekte, sürücü uygulamanın satır kümesi arabelleğine yerleştirdiği benzersiz değeri döndürür. Birden fazla yürütme sırasında veri sütunu varsa, uygulama hangi sütun için veri göndereceğini belirlemek için bu değeri kullanır; sürücünün belirli bir sırada yürütme sırasındaki veriler için veri istemesi gerekmez.
Sütun verilerini sürücüye göndermek için SQLPutData'yi çağırır. Sütun verileri genellikle uzun verilerde olduğu gibi tek bir arabelleğe sığmıyorsa, uygulama verileri parçalar halinde göndermek için SQLPutData'yı art arda çağırır; verileri yeniden bir araya getirmek sürücüye ve veri kaynağına bağlı. Uygulama null olarak sonlandırılan dize verilerini geçirirse, sürücü veya veri kaynağı yeniden birleştirme işleminin bir parçası olarak null sonlandırma karakterini kaldırmalıdır.
Sütuna ait tüm verilerin gönderildiğini belirtmek için SQLParamData işlevini tekrar çağırır. Veri gönderilmemiş olan herhangi bir yürütme sırasında veri sütunu varsa, sürücü SQL_NEED_DATA ve sonraki yürütme sırasında veri sütunu için benzersiz değeri döndürür; uygulama 5. adıma döner. Tüm yürütme sırasındaki veriler için veri gönderildiyse, satırın verileri veri kaynağına gönderilir. SQLParamData daha sonra SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO döndürür ve SQLBulkOperations veya SQLSetPos'un döndürebileceği herhangi bir SQLSTATE döndürebilir.
SQLBulkOperations veya SQLSetPos, SQL_NEED_DATA döndürdüğünde ve son yürütme sırasında veri sütunu için veriler tamamen gönderilmeden önce deyim Veri Gerekiyor durumunda olur. Bu durumda uygulama yalnızca SQLPutData, SQLParamData, SQLCancel, SQLGetDiagField veya SQLGetDiagRec; diğer tüm işlevler SQLSTATE HY010 (İşlev dizisi hatası) döndürür. SQLCancel çağrısı deyiminin yürütülmesini iptal eder ve önceki durumuna döndürür. Daha fazla bilgi için bkz . Ek B: ODBC Durumu Geçiş Tabloları.