PDA

View Full Version : سوال: رفتارهاي عجيب در Stored Procedure ها



mehdi58
دوشنبه 22 مهر 1387, 16:40 عصر
با سلام

مورد اول :

فرض كنين محتويات SP من بصورت زيره :



select myfield from mytable
where myfield <> null

حالا موقعيكه اين SP از طريق Application فراخواني ميشه خروجي اون هيچ ركوردي رو در بر نمي گيره اما اگه توي SQL و با استفاده از دستور EXEC mySP اجرا بشه خروجي اون شامل تعدادي ركورده

و اينكه اگه بصورت زير اصلاح بشه اون وقت در هر دو جواب مي ده :



select myfield from mytable
where myfield is not null

************************************************** **
مورد دوم :

فرض كنين محتويات SP من بصورت زيره :



if (select myfield from mytable) = null
print 'ok'
else
print 'not ok'

حالا موقعيكه اين SP از طريق Application فراخواني ميشه Error ميده :


subquery returned more than 1 value .
this is not permitted when the subquery follows = != < <= >= or when the subquery is used as an expression .

ولي اگه توي SQL و با استفاده از دستور EXEC mySP اجرا بشه خروجي اون شامل تعدادي ركورده

و اينكه اگه بصورت زير اصلاح بشه اون وقت در هر دو جواب مي ده :



if (select count(myfield) from mytable) = 0
print 'ok'
else
print 'not ok'

به نظر شما اين دوگانگي رفتار از چيه ؟

AminSobati
دوشنبه 22 مهر 1387, 23:39 عصر
دوست عزیزم احتمالا Data Provider شما که نمیدونم OLE DB هست یا Native Client از تنظیمات خاصی برای NULL استفاده میکنه. برای اطلاعات بیشتر تنظیمات SET ANSI_NULLS رو در Books Online ببینید