Her hangi bir tablonun tüm alanların ;alan isimleerini ve değerlerini aşağıdaki tabloya ekleyen bir procedure nasıl yazabiliriz.
exec FieldveValueYaz("Yazıalacak Table") şeklinde çalıştıracağız..tüm alanları ncar tipi değişkene çevirip değerleri ile beraber tablo1 içerisine yazacak
CREATE TABLE [dbo].[TABLO1](
[Fieldname] [nchar](50) NULL,
[FieldValue] [nchar](300) NULL
) ON [PRIMARY]
Çıktısı şu şekilde olacak
[Fieldname] [FieldValue]
name VEDAT
surname PALA
city TOKAT
counrty TÜRKİYE
ms sql procedure yazma
Re: ms sql procedure yazma
Dinamik SQL oluşturarak bu işlemi aşağıdaki gibi yapabilirsiniz.
Kod: Tümünü seç
declare @TableName varchar(50) = 'Yazılacak Table';
declare @Columns varchar(4000) = '';
declare @InsertValues varchar(4000) = '';
declare @ColumnsVar varchar(4000) = '';
declare @SQL varchar(max);
SELECT @Columns = @Columns + '[' + COLUMN_NAME + ']' from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName
SELECT @InsertValues = @InsertValues + '(''' + COLUMN_NAME + ''',@' + COLUMN_NAME + '),' from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName
SET @ColumnsVar = REPLACE(REPLACE(@Columns,'[','@'),']',',');
SET @ColumnsVar = LEFT(@ColumnsVar, LEN(@ColumnsVar)-1);
SET @InsertValues = LEFT(@InsertValues, LEN(@InsertValues)-1);
SET @SQL = @Columns;
SET @SQL = REPLACE(@SQL,'[','DECLARE @');
SET @SQL = REPLACE(@SQL,']',' nvarchar(300);');
SET @SQL = @SQL + 'DECLARE RowCursor CURSOR FOR ';
SET @SQL = @SQL + 'SELECT * FROM ' + @TableName + ';';
SET @SQL = @SQL + 'OPEN RowCursor ';
SET @SQL = @SQL + 'FETCH NEXT FROM RowCursor INTO ' + @ColumnsVar + '; ';
SET @SQL = @SQL + 'WHILE @@FETCH_STATUS = 0 ' ;
SET @SQL = @SQL + 'BEGIN ';
SET @SQL = @SQL + 'INSERT INTO TABLO1 Values ' + @InsertValues + ';';
SET @SQL = @SQL + 'FETCH NEXT FROM RowCursor INTO ' + @ColumnsVar + '; ';
SET @SQL = @SQL + 'END ';
SET @SQL = @SQL + 'CLOSE RowCursor ';
SET @SQL = @SQL + 'DEALLOCATE RowCursor ';
exec(@SQL)
- softdestek
- Üye
- Mesajlar: 155
- Kayıt: 17 Eyl 2010 03:53
Re: ms sql procedure yazma
Şu soruma da bakabilir misiniz?
Teşekkür ederim.
XML verilerden faklı olanları listeleme
viewtopic.php?f=27&t=34501
Teşekkür ederim.
XML verilerden faklı olanları listeleme
viewtopic.php?f=27&t=34501