存储过程实现:更新、插入、删除、再插入

已经在空间上放了好几篇存储过程的东西了,本来这个不想再放上去了,但是想想,为了这个思路的完整性,还是把这个存储过程也给放上来

这次实现的是从回收站还原的功能,整体思路是,先更新所需的档案件号,然后复制到对应的部门表中,然后删除回收站表的数据,再把刚刚到部门表中的数据插入到总表中,使得部门的表和总表数据一致

ALTER PROC [dbo].[add_data_yes]
@tablename varchar(30),
@id INT,
@jh INT

AS
declare @sql nvarchar(4000)

SET @sql=N'update S_del set jh='+CAST(@jh AS VARCHAR(10))+N' where id='+CAST(@id AS VARCHAR(10))+N';INSERT INTO <a href="mailto:%27+@tablename+N%27" target="_blank">'+@tablename+N'</a>
( tm ,
jh ,
ajh ,
gjz ,
sjms ,
fsdd ,
fsrq ,
zyrw ,
psz ,
psrq ,
tgz ,
zrz ,
sc ,
ly ,
cjh ,
srz ,
flh ,
dph ,
bz ,
xpdx ,
xpgs ,
xpxs ,
scrid ,
scr ,
scsj ,
scbm ,
shr ,
shsj ,
ecbz ,
gdr ,
gdsj ,
xgsj ,
flag ,
ysurl ,
ysfile ,
xgurl ,
xgfile ,
xwurl ,
xwnr ,
textall
)
SELECT
tm ,
jh ,
ajh ,
gjz ,
sjms ,
fsdd ,
fsrq ,
zyrw ,
psz ,
psrq ,
tgz ,
zrz ,
sc ,
ly ,
cjh ,
srz ,
flh ,
dph ,
bz ,
xpdx ,
xpgs ,
xpxs ,
scrid ,
scr ,
scsj ,
scbm ,
shr ,
shsj ,
ecbz ,
gdr ,
gdsj ,
xgsj ,
flag ,
ysurl ,
ysfile ,
xgurl ,
xgfile ,
xwurl ,
xwnr ,
textall
FROM S_del WHERE id='+CAST(@id AS varchar(10))+N';delete from S_del  where id='+CAST(@id AS varchar(10))+N';insert into S_bm_all select *  from <a href="mailto:%27+@tablename+N%27" target="_blank">'+@tablename+N'</a> where id=(select max(id) from <a href="mailto:%27+@tablename+N%27%29%27" target="_blank">'+@tablename+N')'</a>
EXEC(@sql)

好了,以前是因为自己对存储过程没有入门,写了几个放在上面了,现在感觉对存储过程有了一点状态,不再放存储过程山来了(我感觉特别有意义的除外)