Sql Server 2005'te depolanmış bir prosedürüm var:ADO ve VB ile saklı yordam giriş parametresine NULL veya boş dizeler nasıl iletilir?
@Value varchar(24) = NULL
benim VB6 uygulamasında tanımlanmış bir varchar giriş parametresi ile parametre ADO işleviyle ayarlamaya çalışıyorum:
Set prmParamVal = cmdChkParam.CreateParameter(, adVarChar, adParamInput, Len(paramValue), paramValue)
Değer Geçmeye çalışıyorum boş (sıfır uzunluk) bir dize, sonra aşağıdaki hatayı alıyorum:
ADODB.Connection error '800a0e7c' Parameter object is improperly defined. Inconsistent or incomplete information was provided.
Boş bir dize yerine bir NULL değeri geçirmeyi denedim, ancak bu farklı hatalara neden olur.
Boş dizeleri veya NULL değerlerini saklı yordama nasıl geçirebilirim?
Zaten çok fazla makale okudum ve forum aradım (hatta soruyu birkaç kez buldum) ama doğru cevaplamadan.
Boş dizeler için şimdiye kadarki çözüm, length = 1 değerini ayarlamak veya string = "" (boş alan) ayarlamaktır. Ama bu pek hoş değil ve NULL göndermek için tercih ederim. Ayrıca, paramValue öğesini, etcNull, Null, vbNullString ile ayarlamayı ya da prmParamVal.value = setini boş bırakmadan ayarlamayı denedim!
ah! tamam, son cümlenin önemli olduğunu düşünüyorum! Null ile olan problemim her zaman sıfırın uzunluğudur - bu da bir hataya neden olur.Yani benim db'de parametre varchar (24) olarak tanımlanırken herhangi bir dezavantaj olmaksızın uzunluğu 24'e ayarlayabilirim? –
Yep - sproğunuz bir VARCHAR (24) olduğu için, uzunluğu 24 olarak ayarlayın. Herhangi bir yan etki olmaz. –