sanket saxena is correct.
Specifically look at these lines
declare short cursor for
select Message,Mobileno,MSgdelivered,Replymsg
from Shortcode_Course_SMS where Msgdelivered > @Fromdate and Msgdelivered < @Todate
open short
fetch next from short into @Msgdelivered
The bits in bold are important.
You have declared that your cursor will be retrieving
four items from each row, but when you do the fetch you have only supplied
one "holder" (variable) for the results. Four into One does not go!
Either change the cursor declaration to
declare short cursor for
select MSgdelivered from Shortcode_Course_SMS where Msgdelivered > @Fromdate and Msgdelivered < @Todate
OR, provide enough variables when you do the FETCH
open short
fetch next from short into @Message, @Mobileno, @Msgdelivered, @ReplyMsg
You will need to do something similar with the other cursors too