2016-07-19 19 views
0

Ich erstellte eine SQL-Prozedur, die alle Werte in einem Feld mit Xs die gleiche Länge wie die ursprünglichen Werte ersetzt.SQL - gespeicherte Prozedur, übergeben Feld und Tabellenname Parameter beim Ausführen

Update Table 
Set  Name = Replicate('x', Len(Name)) 

Ich versuche, dieses Verfahren zu ändern, so dass ich nur einen Tabellen- und Feldnamen als Parameter auf ausführen, anstatt die Bearbeitung der gespeicherten Prozedur jedes Mal, wenn ich ein neues Feld übergeben will passieren kann. Gibt es eine Möglichkeit, dies zu tun?

Dies ist, was ich denke, die Aussagen aussehen ausführen soll, wenn ich will x die Werte in einem anderen Feld aus:

Exec MyProcedure ‘Users’, ‘Email’ 
+0

Sie können dies in einer gespeicherten Prozedur mit dynamischem SQL tun, aber es ist gefährlich. Vielleicht möchten Sie hier erklären, was Sie hier wirklich versuchen, damit wir Ihnen sicherere und zuverlässigere Optionen vorschlagen können. – RBarryYoung

+0

Danke für Ihre Antwort. Sie haben Recht, eine Prozedur wie diese ist gefährlich, wird aber nur in einer Test-DB ausgeführt und ich habe einen eingebauten Check eingebaut, der dies sicherstellt. Wie könnte ich das mit dynamischem SQL machen? – Cat4Storm

Antwort

0

Sie EXEC verwenden können SQL-Anweisungen wie diese auszuführen: EXEC (@sqlCommand) . SqlCommand ist die von Ihnen zusammengestellte Zeichenfolge basierend auf den empfangenen Parametern.

Eine andere Option wäre auch, die Anweisung mit sp_executesql auszuführen.