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'
به نظر شما اين دوگانگي رفتار از چيه ؟
مورد اول :
فرض كنين محتويات 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'
به نظر شما اين دوگانگي رفتار از چيه ؟