ELSE -- int,bit,numeric,decimal 类型
BEGIN
SET @stringData = @stringData + ''''
+ '''+isnull('''''
+ '''''+convert(varchar(200),'
+ @colName + ')+'''''
+ ''''',''NULL'')+'',''+'
END
SET @string = @string + @colName + ','
FETCH NEXT FROM cursCol INTO @colName, @dataType
END
DECLARE @Query NVARCHAR(4000)
--设置表的过滤条件
IF @filterCondition = ''
OR @filterCondition IS NULL
BEGIN
SET @filterCondition = ' 1=1 '
END
SET @query = 'SELECT ''' + SUBSTRING(@string, 0, LEN(@string))
+ ') VALUES(''+ ' + SUBSTRING(@stringData, 0, LEN(@stringData) - 2)
+ '''+'')'' FROM ' + @tableName + ' where ' + @filterCondition
PRINT @query
EXEC sp_executesql @query
CLOSE cursCol
DEALLOCATE cursCol
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
1、不使用过滤条件功能
InsertGenerator leave,''
得到生成insert语句的sql为:
SELECT 'INSERT leave(LeaveGUID,LeaveName,LeaveDay,Memo,Status) VALUES(' + ''
+ ISNULL('''' + CONVERT(VARCHAR(200), LeaveGUID) + '''', 'NULL') + ','
+ '' + ISNULL('''' + LeaveName + '''', 'NULL') + ',' + ''
+ ISNULL('''' + CONVERT(VARCHAR(200), LeaveDay) + '''', 'NULL') + ','
+ '' + ISNULL('''' + Memo + '''', 'NULL') + ',' + '' + ISNULL(''''
+ Status + '''',
'NULL') + ''
+ ')'
FROM leave
WHERE 1 = 1
结果:

2、使用过滤添加条件功能:
InsertGenerator leave,'status=''同意'''
得到生成insert语句的sql为:
SELECT 'INSERT leave(LeaveGUID,LeaveName,LeaveDay,Memo,Status) VALUES(' + ''
+ ISNULL('''' + CONVERT(VARCHAR(200), LeaveGUID) + '''', 'NULL') + ','
+ '' + ISNULL('''' + LeaveName + '''', 'NULL') + ',' + ''
+ ISNULL('''' + CONVERT(VARCHAR(200), LeaveDay) + '''', 'NULL') + ','
+ '' + ISNULL('''' + Memo + '''', 'NULL') + ',' + '' + ISNULL(''''
+ Status + '''',
'NULL') + ''
+ ')'
FROM leave
WHERE status = '同意'
结果:

作者“Cocoa Is My Mistress And Dotnet Is My Wife.”