2016-07-20 11 views
1

Gibt es eine Möglichkeit, die in eine Tabelle einzufügenden Werte in einer Variablen als durch Kommas getrennte Werte zu erfassen und die Variable zu verwenden, um die Anweisung insert into auszuführen. Zum Beispiel kann eine Testtabelle erstellen, wieEinfügen in Tabellenwerte aus einer einzelnen gespeicherten SQL-Prozedur

create table id_test (id int, name varchar(10)) 

eine Variable zu deklarieren und den Wert für die Variable die Werte werden in der Tabelle, wie unten gezeigt getrennt mit Komma eingefügt werden:

declare @test as varchar(60) ; 
set @test = '10,''john'''; 

nun mit die Variable @test in insert into als

insert into id_test (id,name) values(@test) 

Grund für diese Frage ist, dass ich will nicht alle Variablen aus Web-Seite zu einem gespeicherten passieren Verfahren. Stattdessen möchte ich eine Variable von der Webseite übergeben, die die durch Komma getrennten Werte enthält, die in die Tabelle eingefügt werden sollen.

+0

Die beste Methode besteht darin, die Werte aller Variablen als separate Parameter zu übergeben. Ihre Methode führt zu SQL Injection – Madhivanan

+0

@ Madhivanan, gibt es einen bestimmten Grund, dies zu tun? Ich dachte, besser, eine Variable zu haben, anstatt einzelne Variablen zu übergeben, da jede Tabelle mehr Spalten hat. – bhuvana

+2

ja es führt zu sql injection stackoverflow.com/questions/601300/what-is-sql-injection – Madhivanan

Antwort

1

Mit einer dynamischen Abfrage können Sie dies erreichen. Gespeicherte Prozedur nach Variablendeklaration

declare @test as varchar(60); 
set @test = '10,''john'''; 

declare @sql AS VARCHAR(MAX) = 'insert into id_test (id, name) values('[email protected]+')' 

--USE EXEC() to execute your insert command 
EXEC(@sql) 
+0

Danke @JaydipJ !! Es klappt!! – bhuvana

+0

Offen für SQL Injection-Angriffe. –

Verwandte Themen