当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQLServer编写存储过程小工具(二)

MSSQL
SQL Server中选出指定范围行的SQL语句写法
Microsoft SQL Server 2000安装问题集锦
修改SQL Server 2005 sa用户密码的方法
SQL Server数据库查询优化的常用方法总结
两种与SQL Server数据库交换数据的方法
Sun正式发布MySQL 5.1版 简化数据库应用
使用SQL Server 2008中对象相关性
SQL注入防御:用三种策略应对SQL注入攻击
SQL Server 2005 SP3正式版
MySQL数据库中使用GRANT语句增添新用户
讲解数据库加密技术的功能特性与实现方法
如何在SQL Server数据库中加密数据
30步检查SQL Server安全列表
在SQL Server数据库开发中的十大问题
向外扩展SQL Server 实现更高扩展性
SQL Server 2005 五个动态管理对象
从算法入手讲解SQL Server的典型示例
如何解决SQLServer占内存过多的问题
SQL指令植入式攻击的危害及其防范措施
SQL游标原理和使用方法

MSSQL 中的 SQLServer编写存储过程小工具(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 111 ::
收藏到网摘: n/a

SQLServer编写存储过程小工具

以下是两个存储过程的源程序


/*===========================================================

语法:sp_GenInsert<TableName>,<StoredProcedureName>
以northwind数据库为例
sp_GenInsert'Employees','INS_Employees'

注释:如果您在Master系统数据库中创建该过程,那您就可以在您服务器上所有的数据库中使用该过程。

=============================================================*/

CREATEproceduresp_GenInsert
@TableNamevarchar(130),
@ProcedureNamevarchar(130)
as
setnocounton

declare@maxcolint,
@TableIDint

set@TableID=object_id(@TableName)

select@MaxCol=max(colorder)
fromsyscolumns
whereid=@TableID

select'CreateProcedure'+rtrim(@ProcedureName)astype,0ascolorderinto#TempProc
union
selectconvert(char(35),'@'+syscolumns.name)
+rtrim(systypes.name)
+casewhenrtrim(systypes.name)in('binary','char','nchar','nvarchar','varbinary','varchar')then'('+rtrim(convert(char(4),syscolumns.length))+')'
whenrtrim(systypes.name)notin('binary','char','nchar','nvarchar','varbinary','varchar')then''
end
+casewhencolorder<@maxcolthen','
whencolorder=@maxcolthen''
end
astype,
colorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
[email protected]<>'sysname'
union
select'AS',@maxcol+1ascolorder
union
select'INSERTINTO'+@TableName,@maxcol+2ascolorder
union
select'(',@maxcol+3ascolorder
union
selectsyscolumns.name
+casewhencolorder<@maxcolthen','
whencolorder=@maxcolthen''
end
astype,
colorder+@maxcol+3ascolorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
[email protected]<>'sysname'
union
select')',(2*@maxcol)+4ascolorder
union
select'VALUES',(2*@maxcol)+5ascolorder
union
select'(',(2*@maxcol)+6ascolorder
union
select


selecttypefrom#tempprocorderbycolorder

droptable#tempproc