اون sp هم که نوشتم اینه
یه نگاهی لطفاً بهش بندازید.
میتونم اینو جایگزین کد های بالا کنم؟
create procedure insertArticle(
@articles dbo.artikleInfo readonly,
@InsertUser decimal(18,3),
@sanadID bigint)
as
declare @kolcode nvarchar(200),@moinCode nvarchar(200),@tafCode nvarchar(200),@jozCode nvarchar(200),@sharh nvarchar(500)
declare @bed bigint,@bes bigint
declare @sarfaslId int,@mahiat int
declare @jambed bigint,@jambes bigint
declare @errorSTR nvarchar(500)
declare @Error int
--------------------------------------------------
begin tran tran1
declare @loopCnt int
select @loopCnt=MAX(id) from @articles
declare @i int
set @i=1
while @i <= @loopCnt
begin
select @kolcode=koleKode,@moinCode=moinKode,@tafCode=tafK ode,@jozCode=jozKode,@sharh=sharhArt,@bed=bedArt,@ bes=BesArt
from @articles
where id=@i
set @Error=@@ERROR
if @Error<>0
begin
goto done
end
/*کنترل سرفصل ابتدا استخراج کلید اصلی سرفصل*/
-----------------------------------------------
if @jozCode=''
begin
SELECT @jambed=utblSarfasl.jamBed,@jambed=utblSarfasl.jam Bes,@mahiat=utblMahiat.MahiatSN,@sarfaslId=utblSar fasl.SarfaslSN FROM utblMahiat INNER JOIN utblKol ON utblMahiat.MahiatSN = utblKol.MahiatID INNER JOIN utblSarfasl ON utblKol.KolSN = utblSarfasl.KolID INNER JOIN utblMoin ON utblSarfasl.MoinID = utblMoin.MoinSN INNER JOIN utblTafzili ON utblSarfasl.tafziliID = utblTafzili.TafziliSN where utblKol.KolCode=@kolcode and utblmoin.MoinCode=@moinCode and utblTafzili.TafziliCode=@tafCode and utblsarfasl.jozid=-1
end
else
begin
SELECT @jambed=utblSarfasl.jamBed,@jambed=utblSarfasl.jam Bes,@mahiat=utblMahiat.MahiatSN,@sarfaslId=utblSar fasl.SarfaslSN FROM utblMahiat INNER JOIN utblKol ON utblMahiat.MahiatSN = utblKol.MahiatID INNER JOIN utblSarfasl ON utblKol.KolSN = utblSarfasl.KolID INNER JOIN utblMoin ON utblSarfasl.MoinID = utblMoin.MoinSN INNER JOIN utblTafzili ON utblSarfasl.tafziliID = utblTafzili.TafziliSN INNER JOIN utblJoz ON utblSarfasl.JozID = utblJoz.JozSN where utblKol.KolCode=@kolcode and utblmoin.MoinCode=@moinCode and utblTafzili.TafziliCode=@tafCode and utblJoz.JozCode=@jozCode
end
set @Error=@@ERROR
if @Error<>0
begin
goto done
end
-----------------------------------------------
/*********************************[کنترل میزان بدهکار و بستانکار با ماهیت سرفصل]**********************/
-----------------------------------------------
set @jambed=0
set @jambes=0
declare @prevbed nvarchar , @prevbes nvarchar
set @prevbed=@jambed
set @prevbes=@jambes
set @jambed=@jambed + @bed
set @jambes=@jambes+@bes
---------کنترل با ماهیت-----------------
if @mahiat=3
begin
if @jambed < @jambes
begin
raiserror('سرفصل بستانکار می شود مشخصات سرفصل کد کل : @a \n و کدمعین : @b \n و کد تفضیلی : @c \n و کد جز : @d \n جمع بدهکار : @e \n و جمع بستانکار : @f',1,1,@kolCode,@moinCode,@tafCode,@jozCode,@prev bed,@prevBes)
goto done
end
end
if @mahiat=4
begin
if @jambed > @jambes
begin
raiserror('سرفصل بدهکار می شود مشخصات سرفصل کد کل : @a \n و کدمعین : @b \n و کد تفضیلی : @c \n و کد جز : @d \n جمع بدهکار : @e \n و جمع بستانکار : @f',1,1,@kolCode,@moinCode,@tafCode,@jozCode,@prev bed,@prevBes)
goto done
end
end
----------------------------------آپدیت جمع بد و بس سرفصل ها-------------------
update utblSarfasl set jamBed=@jambed , jamBes=@jambes where SarfaslSN=@sarfaslId
set @Error=@@ERROR
if @Error<>0
begin
goto done
end
/*------------------------------------ذخیره آرتیکل ها----------------------------*/
insert into utblGardeshSanad (SanadID,SarfaslID,GardeshSharh,GardeshBed,Gardesh Bes,InsertDate,InsertUser,TarikheBarge,ShomareBarg e)
values
(@sanadID,@SarfaslID,@sharh,@bed,@bes,GETDATE(),@I nsertUser,null,null)
set @Error=@@ERROR
if @Error<>0
begin
goto done
end
set @i=@i+1
end
------------end of loop1
commit tran tran1
done:
rollback tran tran1