sql >> Databasteknik >  >> RDS >> Sqlserver

Kolumnnamn som en parameter i INSERT-satsen

Detta är inte möjligt att göra med parametrar. Du måste skapa en dynamisk fråga för att uppnå detta.

Procen som använder dynamisk SQL skulle se ut så här:

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

[EDIT] Svar på din andra fråga. Gör det till en fråga istället för två

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. SonarQube-installation med Oracle DB - Att få användare finns inte

  2. Hur kan jag ändra tidszonen i mysql med PHPMyAdmin utan administratörsbehörighet

  3. SQL Server Cursor Types - Framåt endast dynamisk markör | SQL Server Tutorial / TSQL Tutorial

  4. Skicka e-postmeddelanden med bilagor i SQL Server (T-SQL)