Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL में पंक्ति को क्लोन करने का सबसे तेज़ तरीका

सभी कॉलम नामों को टाइप करने से बचने के लिए आप नीचे संग्रहीत प्रक्रिया की तरह कुछ चला सकते हैं। नीचे दिया गया उदाहरण एक इंट मानता है, लेकिन आप किसी भी डेटा प्रकार के लिए कुंजी प्रकार को स्वैप कर सकते हैं।

create procedure [CloneRow]
    @tableName varchar(max),
    @keyName varchar(max),
    @oldKeyId int,
    @newTableId int output
as
    declare @sqlCommand nvarchar(max),
            @columnList varchar(max);

    select  @columnList = coalesce(@columnList + ',','') + sys.columns.name
    from    sys.columns
    where   object_name(sys.columns.object_id) = @tableName
        and sys.columns.name not in ( @keyName )
        and is_computed = 0;

    set @sqlCommand = 'insert into ' + @tableName + ' ( ' + @columnList + ') (' +
        'select ' + @columnList + ' from ' + @tableName + ' where ' + @keyName + ' = @oldKeyId )'
    exec sp_executesql @sqlCommand, N'@oldKeyId int', @oldKeyId = @oldKeyId
    select @newTableId = @@identity -- note scope_identity() won't work here!
GO

आप इसे इस तरह कहते हैं:

declare @newOrderId int
exec [CloneRow] 'orderTable', 'orderId', 625911, @newOrderId output


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में क्लस्टर्ड या नॉन-क्लस्टर इंडेक्स का उपयोग कब करें

  2. SQL सर्वर में एक टेबल कैसे बनाएं

  3. निकाय ढांचे का उपयोग करके संग्रहीत कार्यविधि निष्पादित करें

  4. SQL सर्वर 2016:एक दृश्य बनाएँ

  5. SqlCommand का पुन:उपयोग करना?