CREATE procedure sp_News_Add
@title nvarchar(100),
@source nvarchar(50),
@editor nvarchar(20),
@fid nvarchar(8),
@content ntext,
@aboutnews nvarchar(2000),
@isindex int,
@islist int,
@ishot int,
@iscolor int,
@days int,
@tablename varchar(50)
as
begin
declare @news_id int
begin tran
      --把新闻存入相应的表
declare @s nvarchar(4000)
set @s='insert into '+@tablename+'(title,editor,fid,content,aboutnews,isindex,islist,ishot,iscolor,days) values(@title,@content,@editor,@fid,@aboutnews,@isindex,@islist,@ishot,@iscolor,@days)'
exec sp_executesql @s
,N'@title nvarchar(100),
@editor nvarchar(20),
@fid nvarchar(8),
@content ntext,
@aboutnews nvarchar(2000),
@isindex int,
@islist int,
@ishot int,
@iscolor int,
@days int'
,@title,@editor,@fid,@content,@aboutnews,@isindex,@islist,@ishot,@iscolor,@days
   --  select "insert into "+@tablename+"(title,editor,fid,content,aboutnews,isindex,islist,ishot,iscolor,days) values("+@title+")"
      --set @news_id=IDENT_CURRENT(@tablename)
       --同时把新闻存入总表
     --exec('insert into news(title,content,editor,fid,aboutnews,isindex,islist,ishot,iscolor,days,news_id,tablename) values('+@title+','+@content+','+@editor+','+@fid+','+@aboutnews+','+@isindex+','+@islist+','+@ishot+','+@iscolor+','+@days+','+@news_id+','+@tablename+')')
       
    if @@error<>0  --有错误进行回滚
       begin
          rollback tran
          return 1  --返回1表示添失败
      end
      
 commit tran
return 0
end
GO