SET @strWhere=''
DECLARE @TName nvarchar(50),@TypeName nvarchar(50),@TypeLength nvarchar(50),@Colstat bit
DECLARE Obj_Cursor CURSOR FOR
SELECT * FROM FN_GetObjColInfo(@TableName)
OPEN Obj_Cursor
FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat
WHILE @@FETCH_STATUS=0
BEGIN
--构造存储过程参数部分
SET @strParameter=@strParameter +CHAR(13)+'@'+ @TName + ' ' +@TypeName+
(CASE
WHEN @TypeName='nvarchar' THEN '('+@TypeLength+')'
ELSE ''
END)+','
--构造新增数据部分
IF @Colstat=0 SET @strInsert=@strInsert + '@'+ @TName +','
--构造更新数据部分
IF (@strWhere='')
BEGIN
IF @Colstat=0 SET @strNewID='SET @'+@TName+'=(Select ISNULL(MAX('+@TName+'),0)
From '+@TableName+')+1 --取新的 ID'
SET @strWhere=' WHERE '+@TName+'='+'@'+@TName
END
ELSE
SET @strUpdate=@strUpdate+@TName+'='+'@'+@TName +','
--构造删除数据部分
FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat
END
CLOSE Obj_Cursor
DEALLOCATE Obj_Cursor
SET @strParameter=LEFT(@strParameter,LEN(@strParameter)-1) --去掉最右边的逗号
SET @strUpdate=LEFT(@strUpdate,LEN(@strUpdate)-1)
SET @strInsert=LEFT(@strInsert,LEN(@strInsert)-1)
--存储过程名、参数
PRINT @SQL_CreateProc+@strParameter +CHAR(13)+'AS'
--修改
PRINT 'IF (@INTUpdateID=0)'
PRINT' BEGIN'+CHAR(13)
PRINT CHAR(9)+'UPDATE '+@TableName+' SET '+@strUpdate+CHAR(13)+CHAR(9)+@strWhere
PRINT ' END'
--增加