国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

自動生成對表進行插入和更新的存儲過程的存儲過程

2024-07-21 02:08:57
字體:
供稿:網(wǎng)友
國內(nèi)最大的酷站演示中心!

我找到了兩個存儲過程,能自動生成對一個數(shù)據(jù)表的插入和更新的存儲過程,現(xiàn)在奉獻給大家!

插入:

create procedure sp_geninsert
@tablename varchar(130),
@procedurename varchar(130)
as
set nocount on
declare @maxcol int,
@tableid int
set @tableid = object_id(@tablename)
select @maxcol = max(colorder)
from syscolumns
where id = @tableid
select 'create procedure ' + rtrim(@procedurename) as type,0 as colorder into #tempproc
union
select convert(char(35),'@' + syscolumns.name)
+ rtrim(systypes.name)
+ case when rtrim(systypes.name) in ('binary','char','nchar','nvarchar','varbinary','varchar') then '(' + rtrim(convert(char(4),syscolumns.length)) + ')'
when rtrim(systypes.name) not in ('binary','char','nchar','nvarchar','varbinary','varchar') then ' '
end
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @tableid and systypes.name <> 'sysname'
union
select 'as',@maxcol + 1 as colorder
union
select 'insert into ' + @tablename,@maxcol + 2 as colorder
union
select '(',@maxcol + 3 as colorder
union
select syscolumns.name
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder + @maxcol + 3 as colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @tableid and systypes.name <> 'sysname'
union
select ')',(2 * @maxcol) + 4 as colorder
union
select 'values',(2 * @maxcol) + 5 as colorder
union
select '(',(2 * @maxcol) + 6 as colorder
union
select '@' + syscolumns.name
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder + (2 * @maxcol + 6) as colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @tableid and systypes.name <> 'sysname'
union
select ')',(3 * @maxcol) + 7 as colorder
order by colorder
select type from #tempproc order by colorder

更新:

create procedure sp_genupdate
@tablename varchar(130),
@primarykey varchar(130),
@procedurename varchar(130)
as
set nocount on
declare @maxcol int,
@tableid int
set @tableid = object_id(@tablename)
select @maxcol = max(colorder)
from syscolumns
where id = @tableid
select 'create procedure ' + rtrim(@procedurename) as type,0 as colorder into #tempproc
union
select convert(char(35),'@' + syscolumns.name)
+ rtrim(systypes.name)
+ case when rtrim(systypes.name) in ('binary','char','nchar','nvarchar','varbinary','varchar') then '(' + rtrim(convert(char(4),syscolumns.length)) + ')'
when rtrim(systypes.name) not in ('binary','char','nchar','nvarchar','varbinary','varchar') then ' '
end
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @tableid and systypes.name <> 'sysname'
union
select 'as',@maxcol + 1 as colorder
union
select 'update ' + @tablename,@maxcol + 2 as colorder
union
select 'set',@maxcol + 3 as colorder
union
select syscolumns.name + ' = @' + syscolumns.name
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder + @maxcol + 3 as colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @tableid and syscolumns.name <> @primarykey and systypes.name <> 'sysname'
union
select 'where ' + @primarykey + ' = @' + @primarykey,(2 * @maxcol) + 4 as colorder
order by colorder
select type from #tempproc order by colorder
drop table #tempproc

 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 浦江县| 中牟县| 始兴县| 织金县| 张家口市| 永丰县| 平泉县| 禹州市| 桂平市| 资阳市| 建宁县| 静安区| 河西区| 台中县| 阳江市| 外汇| 石阡县| 鄢陵县| 曲靖市| 静乐县| 徐汇区| 綦江县| 子长县| 开鲁县| 莫力| 瓦房店市| 会同县| 沿河| 梧州市| 慈利县| 大埔县| 襄樊市| 黄平县| 阜阳市| 奇台县| 青龙| 宜丰县| 乐平市| 兰州市| 潼南县| 镇巴县|