Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tên cột làm tham số trong câu lệnh INSERT

Điều này không thể làm với các tham số. Bạn sẽ cần tạo truy vấn động để đạt được điều này.

Proc sử dụng SQL động sẽ trông giống như sau:

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] Trả lời cho câu hỏi thứ hai của bạn. Tạo một truy vấn thay vì hai

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. Bao gồm bảng &lược đồ khi liệt kê các cột nhận dạng trong cơ sở dữ liệu máy chủ SQL

  2. Tính toán giá trị bằng cách sử dụng giá trị trước đó của một hàng trong T-SQL

  3. Spotlight Cloud Basic:Công cụ giám sát hiệu suất cơ sở dữ liệu miễn phí tốt nhất

  4. Khóa duy nhất so với chỉ mục duy nhất trên SQL Server 2008

  5. System.AccessViolationException trong .NET 4.0 khi kết nối với Cơ sở dữ liệu SQL