Created
May 19, 2014 14:41
-
-
Save premsh/bfa5d715d4fbac7ef67f to your computer and use it in GitHub Desktop.
Copy row same table MSSQL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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