MSSQL

답변형 댓글 로직

따랑 2015. 5. 20. 15:33

/*==============================================================================
업  무  명 : 블로그 포스트 댓글 등록
프로그램명 : 댓글등록
최초작성일 : 2010/11/03
최종작성일 :
개  발  자 : 지 상 훈
수  정  자 :
참고 사항  :
================================================================================*/
ALTER PROCEDURE [dbo].[UP_post_replys_Insert]     
@pidx int,
@cidx int,        
@Writer Varchar(20),     
@Contents varchar(2000),      
@Pwd varchar(20),
@url varchar(100),
@secretYN char(1),
@regip varchar(15),
@icon varchar(50)
AS
SET NOCOUNT ON
BEGIN TRAN
declare @groupNo int, @msgLevel int, @sortOrder int,@refNo int, @border int,@myorder int
declare @newsortOrder int, @newmsgLevel int, @rst int
if (@cidx = 0)
begin
 select @refNo = isnull(max(refNo), 0) + 1,
   @newsortOrder = 0,
   @newmsgLevel = 0
 from dbo.TB_post_replys
 where pidx = @pidx
end
else
begin
 select @refNo = refNo, 
   @msgLevel = msgLevel, 
   @sortOrder = sortOrder 
 from dbo.TB_post_replys
 where pidx = @pidx and cidx = @cidx

 select @rst = min(sortOrder)
 from dbo.TB_post_replys
 where refNo = @refNo and sortOrder>@sortOrder
   and msgLevel<=@msgLevel
 if(@rst is null)
 begin
  select @newsortOrder = max(sortOrder) + 1
  from dbo.TB_post_replys
  where pidx = @pidx and refNo = @refNo
 end
 else
 begin
  Update dbo.TB_post_replys
  set  sortOrder = sortOrder + 1
  where pidx = @pidx and refNo = @refNo and sortOrder >= @rst
  set @newsortOrder = @rst
 end
 set @newmsgLevel = @msgLevel + 1
end

insert dbo.TB_post_replys(pidx, refNo, msgLevel, sortOrder,Writer,
  Contents,pwd,url,secretYN,regip,icon,regdate)
values (@pidx, @refNo, @newmsgLevel, @newsortOrder,@Writer,
  @Contents,@pwd,@url,@secretYN,@regip,@icon, getdate())
IF(@@ERROR<>0)
begin
 Rollback tran
 return
end
Commit Tran