自动生成INSERT语句的SQL存储过程
发布时间:2020-05-23 10:14:05 所属栏目:MySql 来源:互联网
导读:自动生成INSERT语句的SQL存储过程
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 CREATE PROCEDURE #usp_GenInsertSql (@tablename VARCHAR(256))
AS
BEGIN
DECLARE @sql VARCHAR(MAX)
DECLARE @sqlValues VARCHAR(MAX)
SET @sql =' ('
SET @sqlValues = 'values (''+'
SELECT @sqlValues = @sqlValues + cols + ' + '','' + ',@sql = @sql + QUOTENAME(name) + ','
FROM (SELECT CASE
WHEN xtype IN ( 48,52,56,59,60,62,104,106,108,122,127 ) THEN
'case when ' + name
+ ' is null then ''NULL'' else ' + 'cast('
+ name + ' as varchar)' + ' end'
WHEN xtype IN ( 58,61 ) THEN
'case when ' + name
+
' is null then ''NULL'' else '
+ ''''''''' + ' + 'cast(' +
name
+
' as varchar)'
+ '+''''''''' + ' end'
WHEN xtype = 167 THEN 'case when ' + name
+
' is null then ''NULL'' else '
+ ''''''''' + ' + 'replace(' +
name
+ ','''''''','''''''''''')' +
'+'''''''''
+ ' end'
WHEN xtype = 231 THEN 'case when ' + name
+
' is null then ''NULL'' else '
+ '''N'''''' + ' + 'replace('
+
name
+ ','''''''''''')' +
'+'''''''''
+ ' end'
WHEN xtype = 175 THEN
'case when ' + name
+ ' is null then ''NULL'' else '
+ ''''''''' + ' + 'cast(replace(' +
name
+ ','''''''''''') as Char('
+ Cast(length AS VARCHAR) +
'))+'''''''''
+ ' end'
WHEN xtype = 239 THEN
'case when ' + name
+ ' is null then ''NULL'' else '
+ '''N'''''' + ' + 'cast(replace(' +
name
+ ','''''''''''') as Char('
+ Cast(length AS VARCHAR) +
'))+'''''''''
+ ' end'
ELSE '''NULL'''
END AS Cols,name
FROM syscolumns
WHERE id = Object_id(@tablename)) T
SET @sql ='select ''INSERT INTO [' + @tablename + ']'
+ LEFT(@sql,Len(@sql)-1) + ') '
+ LEFT(@sqlValues,Len(@sqlValues)-4)
+ ')'' from ' + @tablename + ';'
EXEC (@sql)
END
go
EXEC #usp_GenInsertSql
test
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
