Spalte name als parameter in der INSERT-Anweisung
Ich möchte, um eine zu erstellen gespeicherte Prozedur wo ich will, zum einfügen von Werten in eine Tabelle.
Aber ich weiß nicht in welches Feld muss ich das einfügen von Werten und an der
Laufzeit werde ich entscheiden, in welches Feld die Werte, die eingefügt werden soll.
Was ich tun möchte, ist
insert into Tablename(@ColumnName, Description)
values (@ColumnValue, @MH_Description)
Kann es sein, dass ich übergeben Sie diese Art der Parameter in der gespeicherten Prozedur, wie im obigen Beispiel gezeigt??
Möchte ich die Bedingungen der Nutzung zu, wie
declare @Query nvarchar(4000)
declare @Abfrage1 vom Datentyp nvarchar(4000)
declare @ParmDefinition vom Datentyp nvarchar(500);set @Query = ' insert into tbl_temp(' + quotename(@ColumnName) +',Description) values (@ColumnValue, @Description)' set @Query1 = ' update tbl_temp set' + quotename(@ColumnName) +'=@ColumnValue, Description=@Description' set @ParmDefinition = N'@ColumnValue varchar(100),@Description varchar(100)' if exists(select 'true' from tbl_temp where quotename(@ColumnName)=@ColumnValue) begin exec sp_executesql @Query1, @ParmDefinition, @ColumnValue = @ColumnValue, @Description = @Description end else begin exec sp_executesql @Query, @ParmDefinition, @ColumnValue= @ColumnValue, @Description = @Description end
Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht möglich, mit Parametern. Sie benötigen zur Erstellung von dynamischen Abfrage, dies zu erreichen.
Den proc mit dynamischen SQL würde das so Aussehen:
[EDIT] Antwort auf Ihre zweite Frage. Machen Sie es eine Abfrage anstelle von zwei