自动生成INSERT语句的SQL存储过程
发布时间:2020-12-24 17:06:19 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 CREATE PROCEDURE #usp_GenInsertSql (@tablename VARCHAR(256))AS BEGIN DECLARE @sql VARCHAR(MAX) DECLARE @sqlValues VARCHAR(MAX) SET @sql =' (
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |