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

INSERT कथन में एक पैरामीटर के रूप में कॉलम का नाम

पैरामीटर के साथ ऐसा करना संभव नहीं है। इसे प्राप्त करने के लिए आपको गतिशील क्वेरी बनाने की आवश्यकता होगी।

डायनेमिक SQL का उपयोग करने वाली खरीद इस तरह दिखेगी:

create procedure MyProc
(
    @ColumnName varchar(100),
    @ColumnValue varchar(100),
    @MH_Description varchar(100)
)
as
begin
    declare @Query nvarchar(4000)
    declare @ParmDefinition nvarchar(500);

    set @Query = '
        insert into Tablename(' + quotename(@ColumnName) +',Description) 
        values (@ColumnValue, @MH_Description)'
    set @ParmDefinition = N'@ColumnValue varchar(100), @MH_Description varchar(100)'
    exec sp_executesql @Query, @ParmDefinition, @ColumnValue = @ColumnValue, @MH_Description = @MH_Description
end

[संपादित करें] अपने दूसरे प्रश्न का उत्तर दें। इसे दो के बजाय एक प्रश्न बनाएं

set @Query = '
    if exists(select * from tbl_temp where '+quotename(@ColumnName)+' = @ColumnValue)
        update tbl_temp set' + quotename(@ColumnName) +' = @ColumnValue, [email protected]
    else        
        insert into tbl_temp(' + quotename(@ColumnName) +',Description)
    values (@ColumnValue, @Description)'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XQuery और नोड आईडी

  2. SQL सर्वर में स्ट्रिंग और नल मानों को कैसे संयोजित करें

  3. कैसे जांचें कि SQL डेटाबेस दूषित है या नहीं - MDF फ़ाइल को सुधारने का समाधान

  4. एकल तालिका से खोजशब्दों के आधार पर संबंधित लेख चुनें

  5. एसक्यूएल 2008 में इंडेक्स के बिना टेबल की सूची