自动生成INSERT语句的SQL存储过程
发布时间:2020-12-24 16:18:33 所属栏目: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】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:重庆站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读

