上次在csdn,这里写了这问题,一直没人帮忙解。苦等不如,自己想办法。
原问题是: 每当新建一个数据表,要建立个UP_TableName的存储过程来实现表的INSERT UPDATE DELETE操作。 如建立了个表是 WoolenDeliveDetail,更新表的存储过程是UP_WoolenDeliveDetail 格式: CREATE PROCEDURE UP_WoolenDeliveDetail 其他的常规的数据表更新存储过程与这存储过程结构差不多。有没有方法实现,新建一表后,执行一个通用的生成更新数据的存储过程,后生成该表的更新存储脚本?? 希望高手,前辈指点,谢谢了。 |
自己的回答是:
自动生成表的更新数据的存储过程: CREATE PROCEDURE SP_CreateProcdure 设计方法: 1、提取表的各个字段信息 SET @SQL_CreateProc='CREATE PROCEDURE UP_'+@TableName +char(13)+'@INTUpdateID int,' +' /* -1 删除 0 修改 1新增 */' DECLARE @TName nvarchar(50),@TypeName nvarchar(50),@TypeLength nvarchar(50),@Colstat bit SET @strParameter=LEFT(@strParameter,LEN(@strParameter)-1) --去掉最右边的逗号 --存储过程名、参数 |
其中有的自定义函数FN_GetObjColInfo,代码如下: /* 功能:返回某一表的所有字段、存储过程、函数的参数信息 设计:OK_008 时间:2006-05 */ CREATE FUNCTION FN_GetObjColInfo (@ObjName varchar(50)) RETURNS @Return_Table TABLE( TName nvarchar(50), TypeName nvarchar(50), TypeLength nvarchar(50), Colstat Bit ) AS BEGIN INSERT @Return_Table select b.name as 字段名,c.name as 字段类型,b.length as 字段长度,b.colstat as 是否自动增长 from sysobjects a inner join syscolumns b on a.id=b.id inner join systypes c on c.xusertype=b.xtype where a.name =@ObjName order by B.ColID RETURN END |
经过自己测试,感觉还行。
节省了很多写更新数据的存储过程时间