Skip to content

Instantly share code, notes, and snippets.

@premsh
Created May 19, 2014 14:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save premsh/bfa5d715d4fbac7ef67f to your computer and use it in GitHub Desktop.
Save premsh/bfa5d715d4fbac7ef67f to your computer and use it in GitHub Desktop.
Copy row same table MSSQL
DECLARE @Tablename NVARCHAR(255) = 'MyTable'
DECLARE @IdColumn NVARCHAR(255) = 'MyTableId' -- Primarykey-Column, will be ignored
DECLARE @IdToCopyFrom VARCHAR(255) = '33' -- Copy from this ID
DECLARE @ColName NVARCHAR(255)
DECLARE @SQL NVARCHAR(MAX) = ''
DECLARE Table_Cursor CURSOR FOR
SELECT [B].[Name]
FROM SYSOBJECTS AS [A], SYSCOLUMNS AS [B]
WHERE [A].[ID] = [B].[ID] AND A.name = @Tablename
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @ColName
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Loop through all columns and link them into the Sql-string (except the PK-column)
DECLARE @SkipComma BIT = 0
IF (@ColName <> @IdColumn)
SET @SQL = @SQL + @ColName
ELSE
SET @SkipComma = 1
FETCH NEXT FROM Table_Cursor INTO @ColName
IF (@SkipComma = 0 AND @@FETCH_STATUS = 0)
SET @SQL = @SQL + ','
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
SET @SQL = 'INSERT INTO ' + @Tablename + '(' + @SQL + ')' +
' SELECT ' + @SQL + ' FROM ' + @Tablename +
' WHERE ' + @IdColumn + ' = ' + @IdToCopyFrom
PRINT @SQL
EXEC(@SQL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment