Ich hatte das vergnügen ein wenig mit den „gespeicherten Prozeduren“ vom MS Sql-Server zu spielen 😉
Hier mal ein Beispiel Scenario:
Aufgabe war es aus einem Text mit Simicolon getrennten Werten
, jeden einzelt in eine Tabelle zu schreiben.
Also als eingangs Parameter haben wir die Variable @temp_ID
@temp_ID hat den Wert: 1423,5895,4578,2248
Gelöst habe ich das so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
USE [master] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[sp_test_insert] -- Add the parameters for the stored procedure here @temp_ID varchar(8000) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here DECLARE @ID varchar(10), @Pos int SET @temp_ID = LTRIM(RTRIM(@temp_ID))+ ',' SET @Pos = CHARINDEX(',', @ temp_ID, 1) IF REPLACE(@temp_ID, ',', '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @ID = LTRIM(RTRIM(LEFT(@temp_ID, @Pos - 1))) IF @ID <> '' BEGIN INSERT INTO Table1 ([ID]) VALUES (@ID) END -- IF @ID <> '' SET @ temp_ID = RIGHT(@temp_ID, LEN(@temp_ID) - @Pos) SET @Pos = CHARINDEX(',', @ temp_ID, 1) END -- WHILE @Pos > 0 END -- IF REPLACE(@temp_ID, ',', '') <> '' END |