PDA

View Full Version : مشکل این کد چی میتونه باشه؟



neynavaz
چهارشنبه 12 آبان 1389, 09:20 صبح
exec('select T_Message.msgid,T_Message.title,Msg_S.status,T_Mes sage.date,T_Message.time from T_Message ,msg_S where ( (t_message.msgtype=@P_typ) and (t_message.msgid= msg_s.msgid) and ( ((msg_s.status=0)and (msg_s.personalid=@P_user_id) )or( ((msg_s.status=1)and (msg_s.personalid=@P_user_id ) )))) order by msg_s.status ')


http://up.iranblog.com/Files73/f4ec3df222b144c8a6ff.png
کسی میدونه این استورد پراسیجر مشکلش کجاست؟

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 09:49 صبح
شما داريد از P_typ@ توي دستور استفاده ميكنيد در حالي كه اين متغير بيرون دستور تعريف شده.
بايد بصورت زير از متغير ها استفاده كنيد
exec('
select
T_Message.msgid,
T_Message.title,
Msg_S.status,
T_Message.date,
T_Message.time
from
T_Message ,msg_S
where
(t_message.msgtype = ''' + @P_typ + ''')
and
(t_message.msgid = msg_s.msgid)
and
(((msg_s.status = 0)
and
(msg_s.personalid= ''' + @P_user_id + '''))
or
(((msg_s.status=1)
and
(msg_s.personalid= ' + @P_user_id + '))))
order by
msg_s.status')

neynavaz
چهارشنبه 12 آبان 1389, 10:07 صبح
آقای
یار احمدی
ممنون از لطفتون

یه سوال من یه نمونه پیدا کردم اینطوری نوشت

'+@p_msg_id+'
کار هم میکنه بنظرتون ایراد داره؟

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 10:13 صبح
اگر توجه كنيد مورد دوم به همين صورتي كه شما نوشتيد.

''' + @P_user_id + '''
اين براي حالتي نوشته ميشه كه فيلد مورد نظر(PersonalId) رشته اي باشه و روش دوم براي حالتي كه فيلد عددي باشه.