SQLServer编写存储过程小工具
功能:为给定表创建Update存储过程
语法:sp_GenUpdate<TableName>,<PrimaryKey>,<StoredProcedureName>
以northwind数据库为例
sp_GenUpdate'Employees','EmployeeID','UPD_Employees'
k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM注释:如果您在Master系统数据库中创建该过程,那您就可以在您服务器上所有的数据库中使用该过程。
k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM /*===========================================================*/ CREATEproceduresp_GenUpdate @TableNamevarchar(130), @PrimaryKeyvarchar(130), @ProcedureNamevarchar(130) as setnocounton k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM declare@maxcolint, @TableIDint 'knowsky.com set@TableID=object_id(@TableName) k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM select@MaxCol=max(colorder) fromsyscolumns whereid=@TableID k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM 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 whereid=@TableIDandsystypes.name<>'sysname' union select'AS',@maxcol+1ascolorder union select'UPDATE'+@TableName,@maxcol+2ascolorder union select'SET',@maxcol+3ascolorder union selectsyscolumns.name+'=@'+syscolumns.name +casewhencolorder<@maxcolthen',' whencolorder=@maxcolthen'' end astype, colorder+@maxcol+3ascolorder fromsyscolumns joinsystypesonsyscolumns.xtype=systypes.xtype whereid=@TableIDandsyscolumns.name<>@PrimaryKeyandsystypes.name<>'sysname' union select'WHERE'+@PrimaryKey+'=@'+@PrimaryKey,(2*@maxcol)+4ascolorder orderbycolorder k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM selecttypefrom#tempprocorderbycolorder k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM droptable#tempproc /*=======源程序结束=========*/ k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM |
k9QSwQGZsbt0pDUVDZR7Oknx5gP5hMg5BOnTItPM