Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nazwa kolumny jako parametr w instrukcji INSERT

Nie można tego zrobić z parametrami. Aby to osiągnąć, musisz zbudować dynamiczne zapytanie.

Procedura używająca dynamicznego SQL wyglądałaby tak:

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

[EDYTUJ] Odpowiedz na drugie pytanie. Zrób jedno zapytanie zamiast dwóch

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. odpytywanie kolumny binarnej za pomocą jak w serwerze sql

  2. SQL, pytania o join

  3. Jak przenieść zaszyfrowane procedury składowane z bazy danych online do lokalnej?

  4. Uwzględnij brakujące miesiące w zapytaniu Grupuj według

  5. SQL Server 2008 - utwórz skrypt bazy danych (schemat + dane) za pomocą wiersza poleceń