PDA

View Full Version : عمل ثبت با توجه به شرط خاص



Iran58
سه شنبه 28 مرداد 1393, 12:12 عصر
سلام
فرض کنید 5ستون داریم
idکلید اصلی
fn از نوع ورکر
pic1 از نوع باینری
pic2 از نوع باینری
pic3 از نوع باینری
ردیفهای 1و 2 را قبلا ثبت کرده ایم
حال می خواهم یک sp بنویسم براساس کلید اصلی یک عکس به جدول اضافه کنم
اما با این شرط اول چک شود ببیند pic1 خالی است یانه اگر خالی بود عکس داخل pic1 ثبت شود وگرنه چک شود ببیند pic2 خالی است یانه اگر خالی بود عکس داخل pic2 ثبت شود و در آخر اگر pic2هم خالی نبود عکس در pic3 ثبت شود
لطفا sp مورد نظر را قراربدهید یا یک نمونه کوچک

ham3d1988
چهارشنبه 29 مرداد 1393, 08:41 صبح
سلام
یه شرطی بزاریذ اولین فیلد خالی بین اون سه فیلد رو پیدا کنه



declare @FN nvarchar(5)
declare @statement nvarchar(max)


set @FN=select
case when pic1 is null then 'pic1'
when pic2 is null then 'pic2'
when pic3 is null then 'pic3
else
'Error'
end as FieldName
from YourTbl
where ID=@id




set @statement='update YourTbl set' + @FN + '=....... where id=' + @id
exec @statement

Iran58
چهارشنبه 29 مرداد 1393, 08:47 صبح
سلام
من کد زیر را نوشته ام لطفا نظر بدهید که کدام کدبهتراست کد پست قبلی یا این کد
ALTER proc [dbo].[sp_Interim_InsertPic]
@id smallint,
@ImageSanad varbinary(max),
@ImageRecognizance varbinary(max)
as
if (select COUNT(ImageSanadOne) from Interim where ID=@id)=0
Begin
Update Interim
Set
ImageSanadOne=@ImageSanad,
ImageRecognizance=@ImageRecognizance
Where
[ID] = @id
End
else if (select COUNT(ImageSanadTwo) from Interim where ID=@id)=0
Begin
Update Interim
Set
ImageSanadTwo=@ImageSanad,
ImageRecognizance=@ImageRecognizance
Where
[ID] = @id
End
else if(select COUNT(ImageSanadThree) from Interim where ID=@id)=0
Begin
Update Interim
Set
ImageSanadThree=@ImageSanad,
ImageRecognizance=@ImageRecognizance
Where
[ID] = @id
End