Skip to content
Skip to content
CTASoftware Blog

Para Desenvolvedores De Software

  • Sobre Mim
← Verificar se valor existe na String Javascript
Criar tabela com base em Select MySQL →
-->

Gerar Query Insert Automaticamente

Posted on 30 de maio de 2017 by Everton Gonçalves

A procedure abaixo cria query INSERT a partir dos registros de uma tabela no SQL Server.

[sql]

CREATE PROC [dbo].[InsertGenerator]
(@tableName varchar(100)) as

–Declare a cursor to retrieve column specific information
–for the specified table
DECLARE cursCol CURSOR FAST_FORWARD FOR
SELECT column_name,data_type FROM information_schema.columns
WHERE table_name = @tableName
OPEN cursCol
DECLARE @string nvarchar(3000) –for storing the first half
–of INSERT statement
DECLARE @stringData nvarchar(3000) –for storing the data
–(VALUES) related statement
DECLARE @dataType nvarchar(1000) –data types returned
–for respective columns
SET @string=’INSERT ‘+@tableName+'(‘
SET @stringData=”

DECLARE @colName nvarchar(50)

FETCH NEXT FROM cursCol INTO @colName,@dataType

IF @@fetch_status<>0
begin
print ‘Table ‘+@tableName+’ not found, processing skipped.’
close curscol
deallocate curscol
return
END

WHILE @@FETCH_STATUS=0
BEGIN
IF @dataType in (‘varchar’,’char’,’nchar’,’nvarchar’)
BEGIN
SET @stringData=@stringData+””””’+
isnull(‘+@colName+’,””)+”””,”+’
END
ELSE
if @dataType in (‘text’,’ntext’) –if the datatype
–is text or something else
BEGIN
SET @stringData=@stringData+””””’+
isnull(cast(‘+@colName+’ as varchar(2000)),””)+”””,”+’
END
ELSE
IF @dataType = ‘money’ –because money doesn’t get converted
–from varchar implicitly
BEGIN
SET @stringData=@stringData+”’convert(money,”””+
isnull(cast(‘+@colName+’ as varchar(200)),”0.0000”)+”””),”+’
END
ELSE
IF @dataType=’datetime’
BEGIN
SET @stringData=@stringData+”’convert(datetime,”””+
isnull(cast(‘+@colName+’ as varchar(200)),”0”)+”””),”+’
END
ELSE
IF @dataType=’image’
BEGIN
SET @stringData=@stringData+””””’+
isnull(cast(convert(varbinary,’+@colName+’)
as varchar(6)),”0”)+”””,”+’
END
ELSE–presuming the data type is int,bit,numeric,decimal
BEGIN
SET @stringData=@stringData+””””’+
isnull(cast(‘+@colName+’ as varchar(200)),”0”)+”””,”+’
END

SET @string=@string+@colName+’,’

FETCH NEXT FROM cursCol INTO @colName,@dataType
END

DECLARE @Query nvarchar(4000) — provide for the whole query,
— you may increase the size

SET @query =’SELECT ”’+substring(@string,0,len(@string)) + ‘)
VALUES(”+ ‘ + substring(@stringData,0,len(@stringData)-2)+”’+”)”
FROM ‘+@tableName
exec sp_executesql @query –load and run the built query

CLOSE cursCol
DEALLOCATE cursCol

GO

[/sql]

Compartilhe isso:

  • Clique para compartilhar no Twitter(abre em nova janela)
  • Clique para compartilhar no Facebook(abre em nova janela)
  • Clique para compartilhar no WhatsApp(abre em nova janela)
  • Clique para compartilhar no Telegram(abre em nova janela)
  • Clique para compartilhar no LinkedIn(abre em nova janela)
  • Clique para enviar um link por e-mail para um amigo(abre em nova janela)

Relacionado

About Everton Gonçalves

http://www.ctasoftware.com.br
View all posts by Everton Gonçalves
This entry was posted in SQL and tagged Consulta SQL, Query, SQL Server. Bookmark the <a href="https://www.ctasoftware.com.br/blog/gerar-query-insert-automaticamente/" title="Permalink to Gerar Query Insert Automaticamente" rel="bookmark">permalink</a>.
← Verificar se valor existe na String Javascript
Criar tabela com base em Select MySQL →

Deixe um comentário Cancelar resposta

Você precisa fazer o login para publicar um comentário.

© 2026 | Blog info WordPress Theme | By Bharat Kambariya