begin..end的问题
CREATE PROCEDURE DelRowByBoardID
@TableName nvarchar(50),
@BoardID INT,
@ParentID INT,
@Depth smallint,
@PrevID smallint,
@NextID smallint
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRANSACTION
Execute('DELETE from '+@TableName+' WHERE BoardID='+@BoardID+'')
IF @Depth > 0
EXEC('UPDATE '+@TableName+' SET child=child-1 WHERE BoardID='+@ParentID+'')
IF @PrevID > 0
EXEC('UPDATE '+@TableName+' SET NextID='+@NextID+' WHERE BoardID='+@PrevID+'')
IF @NextID > 0
EXEC('UPDATE '+@TableName+' SET PrevID='+@PrevID+' WHERE BoardID='+@NextID+'')
COMMIT TRANSACTION
RETURN 0
END
GO
CREATE PROCEDURE DelRowByBoardID
@TableName nvarchar(50),
@BoardID INT,
@ParentID INT,
@Depth smallint,
@PrevID smallint,
@NextID smallint
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRANSACTION
Execute('DELETE from '+@TableName+' WHERE BoardID='+@BoardID+'')
IF @Depth > 0
EXEC('UPDATE '+@TableName+' SET child=child-1 WHERE BoardID='+@ParentID+'')
IF @PrevID > 0
EXEC('UPDATE '+@TableName+' SET NextID='+@NextID+' WHERE BoardID='+@PrevID+'')
IF @NextID > 0
EXEC('UPDATE '+@TableName+' SET PrevID='+@PrevID+' WHERE BoardID='+@NextID+'')
COMMIT TRANSACTION
RETURN 0
END
GO
--2、将每个串select出来,看看能否执行CREATE PROCEDURE DelRowByBoardID
@TableName nvarchar(50),
@BoardID INT,
@ParentID INT,
@Depth smallint,
@PrevID smallint,
@NextID smallint
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRANSACTION declare @s varchar(8000) set @s='DELETE from '+@TableName+' WHERE BoardID='+ cast(@BoardID as varchar(100))+''
EXEC (@s)
select @s IF @Depth > 0
BEGIN
set @s='UPDATE '+@TableName+' SET child=child-1 WHERE BoardID='+ cast(@ParentID as varchar(100))+''
EXEC(@s)
select @s
END
IF @PrevID > 0
BEGIN
set @s='UPDATE '+@TableName+' SET NextID='+@NextID+' WHERE BoardID='+ cast(@PrevID as varchar(100))+''
EXEC(@s)
select @s
END
IF @NextID > 0
BEGIN
set @s='UPDATE '+@TableName+' SET PrevID='+@PrevID+' WHERE BoardID='+ cast(@NextID as varchar(100))+''
EXEC(@s)
select @s
END COMMIT TRANSACTION
RETURN 0
GO